Thunderbots Project
Loading...
Searching...
No Matches
circle.h
1#pragma once
2
3#include "software/geom/convex_shape.h"
4#include "software/geom/point.h"
5
9class Circle final : public ConvexShape
10{
11 public:
15 explicit Circle();
16
24 explicit Circle(const Point &origin, double radius);
25
31 const Point &origin() const;
32
38 double radius() const;
39
45 double area() const override;
46
47 private:
48 Point origin_;
49 double radius_;
50};
51
60bool operator==(const Circle &c, const Circle &d);
61
70bool operator!=(const Circle &c, const Circle &d);
71
80std::ostream &operator<<(std::ostream &os, const Circle &circle);
81
82template <>
83struct std::hash<Circle>
84{
85 size_t operator()(const Circle &circle) const
86 {
87 return std::hash<Point>()(circle.origin()) ^ std::hash<double>()(circle.radius());
88 }
89};
Definition circle.h:10
const Point & origin() const
Definition circle.cpp:14
double area() const override
Definition circle.cpp:24
double radius() const
Definition circle.cpp:19
Circle()
Definition circle.cpp:3
Definition convex_shape.h:9
Definition point.h:14