This commit is contained in:
Matthias Koefferlein 2023-08-12 10:43:57 +02:00
parent fa301b0d32
commit b69cf67c14
2 changed files with 34 additions and 25 deletions

View File

@ -277,6 +277,14 @@ public:
return intersection_point (edge (), other);
}
/**
* @brief Gets the intersection point
*/
db::DPoint intersection_point (const TriangleEdge &other) const
{
return intersection_point (edge (), other.edge ());
}
/**
* @brief Returns a value indicating whether the point is on the edge
* @@@ TODO: Move to db::DEdge

View File

@ -239,34 +239,35 @@ TEST(TriangleEdge_crosses)
EXPECT_EQ (s1.crosses_including (db::TriangleEdge (heap.make_vertex (-1, 0.25), heap.make_vertex(2, 0.25))), true);
}
TEST(TriangleEdge_point_on)
{
VertexHeap heap;
db::TriangleEdge s1 (heap.make_vertex (0, 0), heap.make_vertex (1, 0.5));
EXPECT_EQ (s1.point_on (db::DPoint (0, 0)), false); // endpoints are not "on"
EXPECT_EQ (s1.point_on (db::DPoint (0, -0.5)), false);
EXPECT_EQ (s1.point_on (db::DPoint (0.5, 0)), false);
EXPECT_EQ (s1.point_on (db::DPoint (0.5, 0.25)), true);
EXPECT_EQ (s1.point_on (db::DPoint (1, 0.5)), false); // endpoints are not "on"
EXPECT_EQ (s1.point_on (db::DPoint (1, 1)), false);
EXPECT_EQ (s1.point_on (db::DPoint (2, 1)), false);
}
TEST(TriangleEdge_intersection_point)
{
VertexHeap heap;
db::TriangleEdge s1 (heap.make_vertex (0, 0), heap.make_vertex (1, 0.5));
EXPECT_EQ (s1.intersection_point (db::TriangleEdge (heap.make_vertex (-1, 0.25), heap.make_vertex (2, 0.25))).to_string (), "0.5,0.25");
}
TEST(TriangleEdge_can_flip)
{
}
#if 0
class TestSegment(unittest.TestCase):
def test_crosses(self):
s1 = t.TriangleEdge(t.Vertex(0, 0), t.Vertex(1, 0.5))
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, -0.5), t.Vertex(1, -0.5))), False)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0), t.Vertex(1, 0))), False) # only cuts
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0.5), t.Vertex(1, 0.5))), False)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0.5), t.Vertex(2, 0.5))), False)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0.25), t.Vertex(2, 0.25))), True)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0.5), t.Vertex(-0.1, 0.5))), False)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 0.6), t.Vertex(0, 0.6))), False)
EXPECT_EQ (s1.crosses(t.TriangleEdge(t.Vertex(-1, 1), t.Vertex(1, 1))), False)
def test_point_on(self):
s1 = t.TriangleEdge(t.Vertex(0, 0), t.Vertex(1, 0.5))
EXPECT_EQ (s1.point_on(t.Point(0, 0)), False) # endpoints are not "on"
EXPECT_EQ (s1.point_on(t.Point(0, -0.5)), False)
EXPECT_EQ (s1.point_on(t.Point(0.5, 0)), False)
EXPECT_EQ (s1.point_on(t.Point(0.5, 0.25)), True)
EXPECT_EQ (s1.point_on(t.Point(1, 0.5)), False) # endpoints are not "on"
EXPECT_EQ (s1.point_on(t.Point(1, 1)), False)
EXPECT_EQ (s1.point_on(t.Point(2, 1)), False)
def test_intersection_point(self):
s1 = t.TriangleEdge(t.Vertex(0, 0), t.Vertex(1, 0.5))
EXPECT_EQ (str(s1.intersection_point(t.TriangleEdge(t.Vertex(-1, 0.25), t.Vertex(2, 0.25)))), "(0.5, 0.25)")
def test_can_flip(self):
v1 = t.Vertex(2, -1)
v2 = t.Vertex(0, 0)