96TEST(CircleTest, CircleIntersection) {
97 Circle a(5, 5, 5), b(15, 5, 5),
c(10, 10, 6), d(-5, 5, 2);
98 std::vector<ShapeIntersection> r1, r2, r3;
101 ASSERT_EQ(r1.size(), 1u);
102 EXPECT_EQ(r1[0].point(),
Point(10,5));
103 EXPECT_intersections_valid(a, b, r1, 1e-15);
106 EXPECT_EQ(r2.size(), 2u);
107 EXPECT_intersections_valid(a,
c, r2, 1e-15);
110 EXPECT_EQ(r3.size(), 2u);
111 EXPECT_intersections_valid(b,
c, r3, 4e-15);
113 EXPECT_TRUE(a.intersect(d).empty());
114 EXPECT_TRUE(b.intersect(d).empty());
115 EXPECT_TRUE(
c.intersect(d).empty());
118TEST(CircleTest, LineIntersection) {
124 EXPECT_TRUE(
c.intersects(l1));
125 EXPECT_TRUE(
c.intersects(l2));
126 EXPECT_FALSE(
c.intersects(l3));
128 std::vector<ShapeIntersection> r1, r2, r3;
130 r1 =
c.intersect(l1);
131 ASSERT_EQ(r1.size(), 1u);
132 EXPECT_EQ(r1[0].point(),
Point(-5, 5));
133 EXPECT_intersections_valid(
c, l1, r1, 1e-15);
135 r2 =
c.intersect(l2);
136 EXPECT_EQ(r2.size(), 2u);
137 EXPECT_intersections_valid(
c, l2, r2, 1e-14);
139 r3 =
c.intersect(l3);
140 EXPECT_TRUE(r3.empty());