From a56c45e2d38f0f5af16a9854c362aa06bdf9f9c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Mon, 28 Sep 2009 12:12:08 +0000 Subject: [PATCH] * Fixed Bug when getting handle from Halfedge. ( Reported by git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@211 fdac6126-5c0c-442c-9429-916003d36597 --- src/OpenMesh/Core/Mesh/ArrayKernel.hh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/OpenMesh/Core/Mesh/ArrayKernel.hh b/src/OpenMesh/Core/Mesh/ArrayKernel.hh index 2b50f7a5..58e65596 100644 --- a/src/OpenMesh/Core/Mesh/ArrayKernel.hh +++ b/src/OpenMesh/Core/Mesh/ArrayKernel.hh @@ -117,7 +117,11 @@ public: HalfedgeHandle handle(const Halfedge& _he) const { - uint eh(((char*)&edges_.front() - (char*)&_he) % sizeof(Edge)); + // Calculate edge belonging to given halfedge + // There are two halfedges stored per edge + // Get memory position inside edge vector and devide by size of an edge + // to get the corresponding edge for the requested halfedge + uint eh = ( (char*)&_he - (char*)&edges_.front() ) / sizeof(Edge) ; assert((&_he == &edges_[eh].halfedges_[0]) || (&_he == &edges_[eh].halfedges_[1])); return ((&_he == &edges_[eh].halfedges_[0]) ? -- GitLab