Thunderbots Project
Loading...
Searching...
No Matches
segment.h
1#pragma once
2
3#include "software/geom/point.h"
4#include "software/geom/vector.h"
5
6class Segment final
7{
8 public:
12 Segment();
13
17 Segment(const Point& start, const Point& end);
18
24 void setStart(Point o);
25
31 const Point& getStart() const;
32
38 void setEnd(Point o);
39
45 const Point& getEnd() const;
46
52 double length() const;
53
59 double lengthSquared() const;
60
66 Segment reverse() const;
67
73 Vector toVector() const;
74
80 Point midPoint() const;
81
89 bool operator==(const Segment& other) const;
90
91 private:
92 Point start;
93 Point end;
94};
95
104Segment operator+(const Segment& segment, const Vector& vector);
105Segment operator+(const Vector& vector, const Segment& segment);
106
115Segment operator-(const Segment& segment, const Vector& vector);
116
117template <>
118struct std::hash<Segment>
119{
120 std::size_t operator()(const Segment& seg) const
121 {
122 std::size_t const h1(std::hash<Point>()(seg.getStart()));
123 std::size_t const h2(std::hash<Point>()(seg.getEnd()));
124 return h1 ^ (h2 << 1);
125 }
126};
Definition point.h:14
Definition segment.h:7
double lengthSquared() const
Definition segment.cpp:32
bool operator==(const Segment &other) const
Definition segment.cpp:52
Point midPoint() const
Definition segment.cpp:47
Vector toVector() const
Definition segment.cpp:42
double length() const
Definition segment.cpp:27
const Point & getStart() const
Definition segment.cpp:12
void setEnd(Point o)
Definition segment.cpp:17
void setStart(Point o)
Definition segment.cpp:7
Segment()
Definition segment.cpp:3
Segment reverse() const
Definition segment.cpp:37
const Point & getEnd() const
Definition segment.cpp:22
Definition vector.h:12