From 7437a45372a43e4970bc3576691d5a719cd327e6 Mon Sep 17 00:00:00 2001 From: Irlan <-> Date: Thu, 24 May 2018 05:33:01 -0300 Subject: [PATCH] return active edge list while they are not stored --- include/bounce/quickhull/qh_hull.h | 6 +++++- include/bounce/quickhull/qh_hull.inl | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/bounce/quickhull/qh_hull.h b/include/bounce/quickhull/qh_hull.h index 468655a..f704c06 100644 --- a/include/bounce/quickhull/qh_hull.h +++ b/include/bounce/quickhull/qh_hull.h @@ -106,7 +106,11 @@ public: // Get the list of vertices in this convex hull. const qhList& GetVertexList() const; - + + // Get the list of half-edges in this convex hull. + // Return the number of edges. + u32 GetEdgeList(qhHalfEdge** edges, u32 edgeCapacity) const; + // Get the list of faces in this convex hull. const qhList& GetFaceList() const; diff --git a/include/bounce/quickhull/qh_hull.inl b/include/bounce/quickhull/qh_hull.inl index be0da6c..c5ed4ed 100644 --- a/include/bounce/quickhull/qh_hull.inl +++ b/include/bounce/quickhull/qh_hull.inl @@ -52,6 +52,27 @@ inline const qhList& qhHull::GetFaceList() const return m_faceList; } +inline u32 qhHull::GetEdgeList(qhHalfEdge** edges, u32 edgeCapacity) const +{ + u32 edgeCount = 0; + for (qhFace* f = m_faceList.head; f; f = f->next) + { + qhHalfEdge* edge = f->edge; + do + { + if (edgeCount == edgeCapacity) + { + return edgeCount; + } + + edges[edgeCount++] = edge; + + edge = edge->next; + } while (edge != f->edge); + } + return edgeCount; +} + inline u32 qhHull::GetIterations() const { return m_iterations;