From c523c0d61f55faa8c3e71be29c51da884846a4f6 Mon Sep 17 00:00:00 2001 From: Mike Kremer Date: Wed, 7 Nov 2012 12:17:19 +0000 Subject: [PATCH] Added function to get the genus of a mesh. git-svn-id: http://www.openvolumemesh.org/svnrepo/OpenVolumeMesh/trunk@231 66977474-1d4b-4f09-8fe9-267525286df2 --- src/OpenVolumeMesh/Core/TopologyKernel.hh | 7 +++++++ src/Unittests/unittests_basics.hh | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/OpenVolumeMesh/Core/TopologyKernel.hh b/src/OpenVolumeMesh/Core/TopologyKernel.hh index 7b6f049..d23cb60 100644 --- a/src/OpenVolumeMesh/Core/TopologyKernel.hh +++ b/src/OpenVolumeMesh/Core/TopologyKernel.hh @@ -226,6 +226,13 @@ public: /// Get number of cells in mesh virtual unsigned int n_cells() const { return cells_.size(); } + unsigned int genus() const { + return (1 - (n_vertices() - + n_edges() + + n_faces() - + n_cells())/2.0); + } + private: // Cache total vertex number diff --git a/src/Unittests/unittests_basics.hh b/src/Unittests/unittests_basics.hh index 91f3d47..e8297ce 100644 --- a/src/Unittests/unittests_basics.hh +++ b/src/Unittests/unittests_basics.hh @@ -482,6 +482,13 @@ TEST_F(HexahedralMeshBase, TopologyCheckFail) { EXPECT_EQ(HexahedralMesh::InvalidCellHandle, mesh_.add_cell(chfaces, true)); } +TEST_F(PolyhedralMeshBase, VolumeMeshGenus) { + + generatePolyhedralMesh(mesh_); + + EXPECT_EQ(0, mesh_.genus()); +} + TEST_F(PolyhedralMeshBase, VolumeMeshConnectivity) { generatePolyhedralMesh(mesh_); -- GitLab