Merge branch 'Degenerate_assertion' into 'master'
Throw assertion in debug when adding topologically degenerate faces Closes #66 See merge request OpenMesh/OpenMesh!296
This commit is contained in:
@@ -304,6 +304,14 @@ PolyConnectivity::add_face(const VertexHandle* _vertex_handles, size_t _vhs_size
|
|||||||
|
|
||||||
SmartFaceHandle PolyConnectivity::add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3)
|
SmartFaceHandle PolyConnectivity::add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3)
|
||||||
{
|
{
|
||||||
|
// Check if we have been given a degenerate configuration (2 vertices are identical)
|
||||||
|
assert(_vh0!=_vh1);
|
||||||
|
assert(_vh0!=_vh2);
|
||||||
|
assert(_vh1!=_vh2);
|
||||||
|
assert(_vh0!=_vh3);
|
||||||
|
assert(_vh1!=_vh3);
|
||||||
|
assert(_vh2!=_vh3);
|
||||||
|
|
||||||
VertexHandle vhs[4] = { _vh0, _vh1, _vh2, _vh3 };
|
VertexHandle vhs[4] = { _vh0, _vh1, _vh2, _vh3 };
|
||||||
return add_face(vhs, 4);
|
return add_face(vhs, 4);
|
||||||
}
|
}
|
||||||
@@ -312,6 +320,11 @@ SmartFaceHandle PolyConnectivity::add_face(VertexHandle _vh0, VertexHandle _vh1,
|
|||||||
|
|
||||||
SmartFaceHandle PolyConnectivity::add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2)
|
SmartFaceHandle PolyConnectivity::add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2)
|
||||||
{
|
{
|
||||||
|
// Check if we have been given a degenerate configuration (2 vertices are identical)
|
||||||
|
assert(_vh0!=_vh1);
|
||||||
|
assert(_vh0!=_vh2);
|
||||||
|
assert(_vh1!=_vh2);
|
||||||
|
|
||||||
VertexHandle vhs[3] = { _vh0, _vh1, _vh2 };
|
VertexHandle vhs[3] = { _vh0, _vh1, _vh2 };
|
||||||
return add_face(vhs, 3);
|
return add_face(vhs, 3);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,8 +201,12 @@ TEST_F(OpenMeshConvertPolyMeshToTriangle, VertexFaceCheck) {
|
|||||||
EXPECT_EQ(4u, p.n_vertices() ) << "Wrong number of vertices in TriMesh";
|
EXPECT_EQ(4u, p.n_vertices() ) << "Wrong number of vertices in TriMesh";
|
||||||
|
|
||||||
Mesh::VertexIter it = mesh_.vertices_begin();
|
Mesh::VertexIter it = mesh_.vertices_begin();
|
||||||
|
|
||||||
|
|
||||||
//add face to original mesh
|
//add face to original mesh
|
||||||
mesh_.add_face(vhand,(*it),(*++it));
|
Mesh::VertexHandle vhand1 = *it;
|
||||||
|
Mesh::VertexHandle vhand2 = (*++it);
|
||||||
|
mesh_.add_face(vhand,vhand1,vhand2);
|
||||||
|
|
||||||
EXPECT_EQ(2u, mesh_.n_faces() ) << "Wrong number of faces in PolyMesh";
|
EXPECT_EQ(2u, mesh_.n_faces() ) << "Wrong number of faces in PolyMesh";
|
||||||
EXPECT_EQ(2u, p.n_faces() ) << "Wrong number of faces in TriMesh";
|
EXPECT_EQ(2u, p.n_faces() ) << "Wrong number of faces in TriMesh";
|
||||||
|
|||||||
Reference in New Issue
Block a user