89TEST(PointTest, PerpendicularLeft) {
90 EXPECT_EQ(
Point(1, 0).PerpendicularLeft(),
Point(0, -1));
91 EXPECT_EQ(
Point(0, 1).PerpendicularLeft(),
Point(1, 0));
92 EXPECT_EQ(
Point(-1, 0).PerpendicularLeft(),
Point(0, 1));
93 EXPECT_EQ(
Point(0, -1).PerpendicularLeft(),
Point(-1, 0));
95 EXPECT_EQ(
Point(1, 1).PerpendicularLeft(),
Point(1, -1));
96 EXPECT_EQ(
Point(-1, 1).PerpendicularLeft(),
Point(1, 1));
97 EXPECT_EQ(
Point(-1, -1).PerpendicularLeft(),
Point(-1, 1));
98 EXPECT_EQ(
Point(1, -1).PerpendicularLeft(),
Point(-1, -1));
101TEST(PointTest, PerpendicularRight) {
102 EXPECT_EQ(
Point(1, 0).PerpendicularRight(),
Point(0, 1));
103 EXPECT_EQ(
Point(0, 1).PerpendicularRight(),
Point(-1, 0));
104 EXPECT_EQ(
Point(-1, 0).PerpendicularRight(),
Point(0, -1));
105 EXPECT_EQ(
Point(0, -1).PerpendicularRight(),
Point(1, 0));
107 EXPECT_EQ(
Point(1, 1).PerpendicularRight(),
Point(-1, 1));
108 EXPECT_EQ(
Point(-1, 1).PerpendicularRight(),
Point(-1, -1));
109 EXPECT_EQ(
Point(-1, -1).PerpendicularRight(),
Point(1, -1));
110 EXPECT_EQ(
Point(1, -1).PerpendicularRight(),
Point(1, 1));
137TEST(PointTest, PointToSegment) {
139 TestPointToSegmentGroup(
147 return std::make_pair(
d,
d *
d);
151 TestPointToSegmentGroup(
158 return std::make_pair(0.0f, 0.0f);
162 TestPointToSegmentGroup(
166 {20, 10}, {1, 0}, 11,
170 return std::make_pair(
d,
d *
d);
174 TestPointToSegmentGroup(
182 return std::make_pair(
d,
d *
d);
186 TestPointToSegmentGroup(
193 return std::make_pair(0.0f, 0.0f);
197 TestPointToSegmentGroup(
201 {10, 20}, {0, 1}, 11,
205 return std::make_pair(
d,
d *
d);
210 TestPointToSegmentGroup(
217 Scalar d_sq = (10 - p.x) * (10 - p.x) + 25;
218 return std::make_pair(std::sqrt(d_sq), d_sq);
222 TestPointToSegmentGroup(
229 return std::make_pair(5.0f, 25.0f);
234 TestPointToSegmentGroup(
241 Scalar d_sq = (p.x - 20) * (p.x - 20) + 25;
242 return std::make_pair(std::sqrt(d_sq), d_sq);
247 TestPointToSegmentGroup(
254 Scalar d_sq = 25 + (10 - p.y) * (10 - p.y);
255 return std::make_pair(std::sqrt(d_sq), d_sq);
259 TestPointToSegmentGroup(
266 return std::make_pair(5.0f, 25.0f);
271 TestPointToSegmentGroup(
278 Scalar d_sq = 25 + (p.y - 20) * (p.y - 20);
279 return std::make_pair(std::sqrt(d_sq), d_sq);
283 TestPointToSegmentGroup(
290 Scalar d_sq = (p.x - 10) * (p.x - 10) + (p.y - 10) * (p.y - 10);
291 return std::make_pair(std::sqrt(d_sq), d_sq);
295 TestPointToSegmentGroup(
303 return std::make_pair(std::sqrt(d_sq), d_sq);
308 TestPointToSegmentGroup(
312 {25, 15}, {1, 1}, 11,
315 Scalar d_sq = (p.x - 20) * (p.x - 20) + (p.y - 20) * (p.y - 20);
316 return std::make_pair(std::sqrt(d_sq), d_sq);
320 TestPointToSegmentGroup(
327 Scalar d_sq = (p.x - 10) * (p.x - 10) + (p.y - 10) * (p.y - 10);
328 return std::make_pair(std::sqrt(d_sq), d_sq);
332 TestPointToSegmentGroup(
340 return std::make_pair(std::sqrt(d_sq), d_sq);
345 TestPointToSegmentGroup(
349 {15, 25}, {1, 1}, 11,
352 Scalar d_sq = (p.x - 20) * (p.x - 20) + (p.y - 20) * (p.y - 20);
353 return std::make_pair(std::sqrt(d_sq), d_sq);