Commit b93dffdc authored by Jan Möbius's avatar Jan Möbius
Browse files

Fixed warnings in Composite computation (extra;)

Fixed missing this pointer in PolyMeshT.hh
Added unittest for dihedral angle function


git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@757 fdac6126-5c0c-442c-9429-916003d36597
parent cb981241
...@@ -472,11 +472,11 @@ public: ...@@ -472,11 +472,11 @@ public:
// calculates the dihedral angle on the edge _eh // calculates the dihedral angle on the edge _eh
Scalar calc_dihedral_angle(EdgeHandle _eh) const Scalar calc_dihedral_angle(EdgeHandle _eh) const
{ return calc_dihedral_angle(halfedge_handle(_eh,0)); } { return calc_dihedral_angle(this->halfedge_handle(_eh,0)); }
/** tags an edge as a feature if its dihedral angle is larger than _angle_tresh /** tags an edge as a feature if its dihedral angle is larger than _angle_tresh
returns the number of the found feature edges, requires edge_status property*/ returns the number of the found feature edges, requires edge_status property*/
uint find_feature_edges(Scalar _angle_tresh = OpenMesh::deg_to_rad(44.0)); unsigned int find_feature_edges(Scalar _angle_tresh = OpenMesh::deg_to_rad(44.0));
// --- misc --- // --- misc ---
/// Face split (= 1-to-n split) /// Face split (= 1-to-n split)
......
...@@ -101,7 +101,7 @@ public: ...@@ -101,7 +101,7 @@ public:
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
}; };
...@@ -153,8 +153,8 @@ public: ...@@ -153,8 +153,8 @@ public:
VF(M& _mesh) : Inherited(_mesh) {} VF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Edge); MIPS_WARN_WA(Edge)
MIPS_WARN_WA(Vertex); MIPS_WARN_WA(Vertex)
}; };
...@@ -175,8 +175,8 @@ public: ...@@ -175,8 +175,8 @@ public:
FF(M& _mesh) : Inherited(_mesh) {} FF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
MIPS_WARN_WA(Edge ); // avoid warning MIPS_WARN_WA(Edge ) // avoid warning
}; };
...@@ -197,8 +197,8 @@ public: ...@@ -197,8 +197,8 @@ public:
FFc(M& _mesh) : Inherited(_mesh) {} FFc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
MIPS_WARN_WA(Edge ); // avoid warning MIPS_WARN_WA(Edge ) // avoid warning
}; };
...@@ -219,8 +219,8 @@ public: ...@@ -219,8 +219,8 @@ public:
FV(M& _mesh) : Inherited(_mesh) {} FV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
}; };
...@@ -241,8 +241,8 @@ public: ...@@ -241,8 +241,8 @@ public:
FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); } FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
static void init_coeffs(size_t _max_valence); static void init_coeffs(size_t _max_valence);
static const std::vector<double>& coeffs() { return coeffs_; } static const std::vector<double>& coeffs() { return coeffs_; }
...@@ -278,8 +278,8 @@ public: ...@@ -278,8 +278,8 @@ public:
VV(M& _mesh) : Inherited(_mesh) {} VV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
}; };
...@@ -300,8 +300,8 @@ public: ...@@ -300,8 +300,8 @@ public:
VVc(M& _mesh) : Inherited(_mesh) {} VVc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
}; };
...@@ -322,8 +322,8 @@ public: ...@@ -322,8 +322,8 @@ public:
VE(M& _mesh) : Inherited(_mesh) {} VE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -344,8 +344,8 @@ public: ...@@ -344,8 +344,8 @@ public:
VdE(M& _mesh) : Inherited(_mesh) {} VdE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -366,8 +366,8 @@ public: ...@@ -366,8 +366,8 @@ public:
VdEc(M& _mesh) : Inherited(_mesh) {} VdEc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -388,8 +388,8 @@ public: ...@@ -388,8 +388,8 @@ public:
EV(M& _mesh) : Inherited(_mesh) {} EV(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
}; };
...@@ -411,8 +411,8 @@ public: ...@@ -411,8 +411,8 @@ public:
EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); } EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
void raise(typename M::VertexHandle& _vh, state_t _target_state); void raise(typename M::VertexHandle& _vh, state_t _target_state);
MIPS_WARN_WA(Face); // avoid warning MIPS_WARN_WA(Face) // avoid warning
MIPS_WARN_WA(Edge); // avoid warning MIPS_WARN_WA(Edge) // avoid warning
static void init_coeffs(size_t _max_valence); static void init_coeffs(size_t _max_valence);
static const std::vector<double>& coeffs() { return coeffs_; } static const std::vector<double>& coeffs() { return coeffs_; }
...@@ -447,8 +447,8 @@ public: ...@@ -447,8 +447,8 @@ public:
EF(M& _mesh) : Inherited(_mesh) {} EF(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::FaceHandle& _fh, state_t _target_state); void raise(typename M::FaceHandle& _fh, state_t _target_state);
MIPS_WARN_WA(Edge ); // avoid warning MIPS_WARN_WA(Edge ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -469,8 +469,8 @@ public: ...@@ -469,8 +469,8 @@ public:
FE(M& _mesh) : Inherited(_mesh) {} FE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -491,8 +491,8 @@ public: ...@@ -491,8 +491,8 @@ public:
EdE(M& _mesh) : Inherited(_mesh) {} EdE(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
...@@ -513,8 +513,8 @@ public: ...@@ -513,8 +513,8 @@ public:
EdEc(M& _mesh) : Inherited(_mesh) {} EdEc(M& _mesh) : Inherited(_mesh) {}
void raise(typename M::EdgeHandle& _eh, state_t _target_state); void raise(typename M::EdgeHandle& _eh, state_t _target_state);
MIPS_WARN_WA(Face ); // avoid warning MIPS_WARN_WA(Face ) // avoid warning
MIPS_WARN_WA(Vertex); // avoid warning MIPS_WARN_WA(Vertex) // avoid warning
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
......
...@@ -113,4 +113,65 @@ TEST_F(OpenMeshOthers, IsEstimatedFeatureEdge) { ...@@ -113,4 +113,65 @@ TEST_F(OpenMeshOthers, IsEstimatedFeatureEdge) {
} }
/*
* Checking for feature edges based on angle
*/
TEST_F(OpenMeshOthers, CalcDihedralAngre ) {
mesh_.clear();
/* Test setup:
*
* 1 -- 2
* | / |
* | / |
* 0 -- 3
*/
// Add some vertices
Mesh::VertexHandle vhandle[4];
vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
vhandle[2] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
// Add four faces
std::vector<Mesh::VertexHandle> face_vhandles;
face_vhandles.push_back(vhandle[0]);
face_vhandles.push_back(vhandle[1]);
face_vhandles.push_back(vhandle[2]);
mesh_.add_face(face_vhandles);
face_vhandles.clear();
face_vhandles.push_back(vhandle[0]);
face_vhandles.push_back(vhandle[2]);
face_vhandles.push_back(vhandle[3]);
mesh_.add_face(face_vhandles);
// ===============================================
// Setup complete
// ===============================================
Mesh::HalfedgeHandle he = mesh_.halfedge_handle(4);
EXPECT_EQ( 0 , mesh_.to_vertex_handle(he).idx() ) << "Wrong halfedge!" << std::endl;
EXPECT_EQ( 2 , mesh_.from_vertex_handle(he).idx() ) << "Wrong halfedge!" << std::endl;
EXPECT_EQ( 2 , mesh_.edge_handle(he).idx() ) << "Wrong Edge!" << std::endl;
Mesh::EdgeHandle eh = mesh_.edge_handle(he);
EXPECT_EQ( 0.0 , mesh_.calc_dihedral_angle(eh) ) << "Wrong Dihedral angle!" << std::endl;
// Modify point
Mesh::Point tmp = ( Mesh::Point(0.0, 0.0, -1.0) + Mesh::Point(1.0, 1.0, -1.0) ) * 0.5;
mesh_.point(vhandle[2]) = tmp;
double difference = fabs( 1.36944 - mesh_.calc_dihedral_angle(eh) );
EXPECT_TRUE( (difference < 0.00001 ) ) << "Wrong Dihedral angle, Difference is to big!" << std::endl;
}
#endif // INCLUDE GUARD #endif // INCLUDE GUARD
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment