diff --git a/src/OpenMesh/Tools/Dualizer/meshDualT.hh b/src/OpenMesh/Tools/Dualizer/meshDualT.hh index 09e2873c..d2975c39 100644 --- a/src/OpenMesh/Tools/Dualizer/meshDualT.hh +++ b/src/OpenMesh/Tools/Dualizer/meshDualT.hh @@ -99,7 +99,7 @@ PolyMesh_ArrayKernelT* MeshDual (PolyMesh_ArrayKernelT & for(typename PolyMesh_ArrayKernelT::ConstFaceIter fit=primal.faces_begin(); fit!=primal.faces_end(); ++fit) { typename PolyMesh_ArrayKernelT::Point centerPoint(0,0,0); - unsigned int degree= 0; + typename PolyMesh_ArrayKernelT::Scalar degree= 0.0; for(typename PolyMesh_ArrayKernelT::ConstFaceVertexIter vit=primal.cfv_iter(*fit); vit.is_valid(); ++vit, ++degree) centerPoint += primal.point(*vit); assert(degree!=0); @@ -124,7 +124,7 @@ PolyMesh_ArrayKernelT* MeshDual (PolyMesh_ArrayKernelT & return dual; -}; +} //============================================================================= } // namespace Util diff --git a/src/Unittests/unittests.cc b/src/Unittests/unittests.cc index f00923ec..8a63f84c 100644 --- a/src/Unittests/unittests.cc +++ b/src/Unittests/unittests.cc @@ -11,6 +11,7 @@ #include "unittests_trimesh_collapse.hh" #include "unittests_decimater.hh" #include "unittests_mc_decimater.hh" +#include "unittests_mesh_dual.hh" #include "unittests_mixed_decimater.hh" #include "unittests_subdivider_uniform.hh" #include "unittests_subdivider_adaptive.hh" diff --git a/src/Unittests/unittests_mesh_dual.hh b/src/Unittests/unittests_mesh_dual.hh new file mode 100644 index 00000000..8a218575 --- /dev/null +++ b/src/Unittests/unittests_mesh_dual.hh @@ -0,0 +1,56 @@ +#ifndef INCLUDE_UNITTESTS_MESHDUAL_HH +#define INCLUDE_UNITTESTS_MESHDUAL_HH + +#include +#include +#include + +class OpenMeshMeshDual : public OpenMeshBasePoly { + + protected: + + // This function is called before each test is run + virtual void SetUp() { + + // Do some initial stuff with the member data here... + } + + // This function is called after all tests are through + virtual void TearDown() { + + // Do some final stuff with the member data here... + } + + // Member already defined in OpenMeshBase + //Mesh mesh_; +}; + +/* + * ==================================================================== + * Define tests below + * ==================================================================== + */ + +/* + */ +TEST_F(OpenMeshMeshDual, Dualize) { + + bool ok = OpenMesh::IO::read_mesh(mesh_, "cube1.off"); + + ASSERT_TRUE(ok); + + PolyMesh* dualMesh; + + dualMesh = OpenMesh::Util::MeshDual(mesh_); + + + std::cerr << "Original has " << mesh_.n_vertices() << " , " << mesh_.n_edges() << " , " << mesh_.n_faces() << std::endl; + + EXPECT_EQ(15048u, dualMesh->n_vertices()) << "The number of vertices after decimation is not correct!"; + EXPECT_EQ(22572u, dualMesh->n_edges()) << "The number of edges after decimation is not correct!"; + EXPECT_EQ(7526u, dualMesh->n_faces()) << "The number of faces after decimation is not correct!"; + + delete(dualMesh); +} + +#endif // INCLUDE GUARD