Thunderbots Project
Loading...
Searching...
No Matches
obstacle.hpp
1#pragma once
2
3#include <memory>
4#include <sstream>
5#include <vector>
6
7#include "proto/primitive.pb.h"
8#include "proto/visualization.pb.h"
9#include "software/ai/navigator/obstacle/obstacle_visitor.h"
10#include "software/geom/algorithms/axis_aligned_bounding_box.h"
11#include "software/geom/algorithms/signed_distance.h"
12#include "software/geom/point.h"
13#include "software/geom/segment.h"
14
19{
20 public:
21 Obstacle() = default;
22 virtual ~Obstacle() = default;
23
32 virtual bool contains(const Point& p, const double t_sec = 0) const = 0;
33
42 virtual double distance(const Point& p, const double t_sec = 0) const = 0;
43
54 virtual double signedDistance(const Point& point, const double t_sec = 0) const = 0;
55
64 virtual bool intersects(const Segment& segment, const double t_sec = 0) const = 0;
65
73 virtual Point closestPoint(const Point& p) const = 0;
74
83 virtual std::vector<Point> rasterize(const double resolution_size) const = 0;
84
90 virtual TbotsProto::Obstacle createObstacleProto() const = 0;
91
100 virtual Rectangle axisAlignedBoundingBox(const double inflation_radius) const = 0;
101
107 virtual std::string toString(void) const = 0;
108
114 virtual void accept(ObstacleVisitor& visitor) const = 0;
115};
116
123TbotsProto::Obstacle createObstacleProto(const Polygon& polygon);
124TbotsProto::Obstacle createObstacleProto(const Rectangle& rectangle);
125TbotsProto::Obstacle createObstacleProto(const Circle& circle);
126TbotsProto::Obstacle createObstacleProto(const Stadium& stadium);
127
132using ObstaclePtr = std::shared_ptr<Obstacle>;
133
142inline std::ostream& operator<<(std::ostream& os, const ObstaclePtr& obstacle_ptr)
143{
144 os << obstacle_ptr->toString();
145 return os;
146}
Definition circle.h:10
Definition obstacle_visitor.h:23
Definition obstacle.hpp:19
virtual std::vector< Point > rasterize(const double resolution_size) const =0
virtual TbotsProto::Obstacle createObstacleProto() const =0
virtual void accept(ObstacleVisitor &visitor) const =0
virtual Rectangle axisAlignedBoundingBox(const double inflation_radius) const =0
virtual bool intersects(const Segment &segment, const double t_sec=0) const =0
virtual double signedDistance(const Point &point, const double t_sec=0) const =0
virtual Point closestPoint(const Point &p) const =0
virtual double distance(const Point &p, const double t_sec=0) const =0
virtual bool contains(const Point &p, const double t_sec=0) const =0
virtual std::string toString(void) const =0
Definition point.h:14
Definition polygon.h:12
Definition rectangle.h:10
Definition segment.h:7
Definition stadium.h:12