Thunderbots Project
Loading...
Searching...
No Matches
ssl_geometry.h
1#pragma once
2
3#include <memory>
4#include <optional>
5
6#include "proto/ssl_vision_geometry.pb.h"
7#include "software/geom/circle.h"
8#include "software/geom/segment.h"
9#include "software/util/make_enum/make_enum.hpp"
10#include "software/world/field.h"
11
79// clang-format off
80MAKE_ENUM(SSLFieldLines,
81 POS_Y_FIELD_LINE, // A
82 NEG_Y_FIELD_LINE, // B
83 NEG_X_FIELD_LINE, // C
84 POS_X_FIELD_LINE, // D
85 HALFWAY_LINE, // E
86 CENTER_LINE, // F
87 NEG_X_DEFENSE_AREA_FRONT_LINE, // G
88 POS_X_DEFENSE_AREA_FRONT_LINE, // H
89 POS_Y_LINE_OF_POS_X_GOAL, // I
90 NEG_Y_LINE_OF_POS_X_GOAL, // J
91 POS_X_GOAL_REAR_LINE, // K
92 POS_Y_LINE_OF_NEG_X_GOAL, // L
93 NEG_Y_LINE_OF_NEG_X_GOAL, // M
94 NEG_X_GOAL_REAR_LINE, // N
95 POS_Y_LINE_OF_NEG_X_DEFENSE_AREA, // O
96 NEG_Y_LINE_OF_NEG_X_DEFENSE_AREA, // P
97 NEG_Y_LINE_OF_POS_X_DEFENSE_AREA, // Q
98 POS_Y_LINE_OF_POS_X_DEFENSE_AREA, // R
99 )
100
101MAKE_ENUM(SSLCircularArcs,
102 CENTER_CIRCLE, // S
103 )
104// clang-format on
105
116std::optional<SSLProto::SSL_FieldLineSegment> findLineSegment(
117 const google::protobuf::RepeatedPtrField<SSLProto::SSL_FieldLineSegment>&
118 line_segments,
119 SSLFieldLines line_type);
120
131std::optional<SSLProto::SSL_FieldCircularArc> findCircularArc(
132 const google::protobuf::RepeatedPtrField<SSLProto::SSL_FieldCircularArc>&
133 circular_arcs,
134 SSLCircularArcs arc_type);
135
143std::unique_ptr<SSLProto::Vector2f> createVector2f(const Point& point);
144
160std::unique_ptr<SSLProto::SSL_FieldLineSegment> createFieldLineSegment(
161 const Segment& segment, float thickness, SSLFieldLines line_type,
162 const SSLProto::SSL_FieldShapeType& shape_type);
163
179std::unique_ptr<SSLProto::SSL_FieldCircularArc> createFieldCircularArc(
180 const Circle& circle, float thickness, SSLCircularArcs arc_type,
181 const SSLProto::SSL_FieldShapeType& shape_type);
182
195std::unique_ptr<SSLProto::SSL_GeometryFieldSize> createGeometryFieldSize(
196 const Field& field, float thickness);
197
210std::unique_ptr<SSLProto::SSL_GeometryData> createGeometryData(const Field& field,
211 float thickness);
212
221std::optional<Field> createField(const SSLProto::SSL_GeometryData& geometry_packet);
Definition circle.h:10
Definition field.h:36
Definition point.h:14
Definition segment.h:7