From 5679540c85465eb67965fdbc95ca5460668c2b78 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 16 Aug 2023 22:21:49 +0200 Subject: [PATCH] Some refactoring --- src/db/db/dbTriangle.cc | 12 ++++++++++++ src/db/db/dbTriangle.h | 5 +++++ src/db/db/dbTriangles.cc | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/db/db/dbTriangle.cc b/src/db/db/dbTriangle.cc index bb7c73910..e8da0ae0f 100644 --- a/src/db/db/dbTriangle.cc +++ b/src/db/db/dbTriangle.cc @@ -476,6 +476,18 @@ Triangle::find_edge_with (const Vertex *v1, const Vertex *v2) const tl_assert (false); } +TriangleEdge * +Triangle::common_edge (const Triangle *other) const +{ + for (int i = 0; i < 3; ++i) { + TriangleEdge *e = edge (i); + if (e->other (this) == other) { + return e; + } + } + return 0; +} + int Triangle::contains (const db::DPoint &point) const { diff --git a/src/db/db/dbTriangle.h b/src/db/db/dbTriangle.h index ff39ab837..ae050b19a 100644 --- a/src/db/db/dbTriangle.h +++ b/src/db/db/dbTriangle.h @@ -476,6 +476,11 @@ public: */ TriangleEdge *find_edge_with (const Vertex *v1, const Vertex *v2) const; + /** + * @brief Finds the common edge for both triangles + */ + TriangleEdge *common_edge (const Triangle *other) const; + /** * @brief Returns a value indicating whether the point is inside (1), on the triangle (0) or outside (-1) */ diff --git a/src/db/db/dbTriangles.cc b/src/db/db/dbTriangles.cc index dd04c56cf..ea8e4aeb9 100644 --- a/src/db/db/dbTriangles.cc +++ b/src/db/db/dbTriangles.cc @@ -338,7 +338,7 @@ Triangles::insert (db::Vertex *vertex, std::list > *n return vertex; } - // the new vertex is on the edge between two triangles + // check, if the new vertex is on an edge (may be edge between triangles or edge on outside) std::vector on_edges; for (int i = 0; i < 3; ++i) { db::TriangleEdge *e = tris.front ()->edge (i);