From b69cf67c1434cf03570c7fcc655792a58cec0ca8 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 12 Aug 2023 10:43:57 +0200 Subject: [PATCH] WIP --- src/db/db/dbTriangle.h | 8 +++++ src/db/unit_tests/dbTriangleTests.cc | 51 ++++++++++++++-------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/src/db/db/dbTriangle.h b/src/db/db/dbTriangle.h index 0f23873f0..cad1c9ce6 100644 --- a/src/db/db/dbTriangle.h +++ b/src/db/db/dbTriangle.h @@ -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 diff --git a/src/db/unit_tests/dbTriangleTests.cc b/src/db/unit_tests/dbTriangleTests.cc index a35129236..3aad4836b 100644 --- a/src/db/unit_tests/dbTriangleTests.cc +++ b/src/db/unit_tests/dbTriangleTests.cc @@ -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)