add calc_normal method for all elements returning calc_face_normal, average of vertex normals, calc_halfedge_normal, and calc_vertex_normal_correct respectively
This commit is contained in:
@@ -271,6 +271,10 @@ public:
|
||||
/** Calculate normal vector for face (_p0, _p1, _p2). */
|
||||
Normal calc_face_normal(const Point& _p0, const Point& _p1,
|
||||
const Point& _p2) const;
|
||||
|
||||
/// same as calc_face_normal
|
||||
Normal calc_normal(FaceHandle _fh) const;
|
||||
|
||||
/// calculates the average of the vertices defining _fh
|
||||
void calc_face_centroid(FaceHandle _fh, Point& _pt) const {
|
||||
_pt = calc_face_centroid(_fh);
|
||||
@@ -323,6 +327,8 @@ public:
|
||||
*/
|
||||
virtual Normal calc_halfedge_normal(HalfedgeHandle _heh, const double _feature_angle = 0.8) const;
|
||||
|
||||
/// same as calc_halfedge_normal
|
||||
Normal calc_normal(HalfedgeHandle, const double _feature_angle = 0.8) const;
|
||||
|
||||
/** identifies feature edges w.r.t. the minimal dihedral angle for feature edges (in radians) */
|
||||
/** and the status feature tag */
|
||||
@@ -368,6 +374,8 @@ public:
|
||||
void calc_vertex_normal_correct(VertexHandle _vh, Normal& _n) const;
|
||||
void calc_vertex_normal_loop(VertexHandle _vh, Normal& _n) const;
|
||||
|
||||
/// same as calc_vertex_normal_correct
|
||||
Normal calc_normal(VertexHandle _vh) const;
|
||||
|
||||
//@}
|
||||
|
||||
@@ -437,6 +445,15 @@ public:
|
||||
return calc_edge_midpoint(this->halfedge_handle(_eh, 0));
|
||||
}
|
||||
|
||||
/// calculated and returns the average of the two vertex normals
|
||||
Normal calc_normal(EdgeHandle _eh) const
|
||||
{
|
||||
HalfedgeHandle _heh = this->halfedge_handle(_eh, 0);
|
||||
VertexHandle vh0 = this->from_vertex_handle(_heh);
|
||||
VertexHandle vh1 = this->to_vertex_handle(_heh);
|
||||
return 0.5 * (this->calc_normal(vh0) + this->calc_normal(vh1));
|
||||
}
|
||||
|
||||
/** defines a consistent representation of a sector geometry:
|
||||
the halfedge _in_heh defines the sector orientation
|
||||
the vertex pointed by _in_heh defines the sector center
|
||||
|
||||
@@ -181,6 +181,14 @@ calc_face_normal(const Point& _p0,
|
||||
>::Result());
|
||||
}
|
||||
|
||||
template<class Kernel>
|
||||
typename PolyMeshT<Kernel>::Normal
|
||||
PolyMeshT<Kernel>::
|
||||
calc_normal(FaceHandle _fh) const
|
||||
{
|
||||
return calc_face_normal(_fh);
|
||||
}
|
||||
|
||||
template <class Kernel>
|
||||
typename PolyMeshT<Kernel>::Normal
|
||||
PolyMeshT<Kernel>::
|
||||
@@ -404,6 +412,18 @@ calc_halfedge_normal(HalfedgeHandle _heh, const double _feature_angle) const
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
template <class Kernel>
|
||||
typename PolyMeshT<Kernel>::Normal
|
||||
PolyMeshT<Kernel>::
|
||||
calc_normal(HalfedgeHandle _heh, const double _feature_angle) const
|
||||
{
|
||||
return calc_halfedge_normal(_heh, _feature_angle);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
template <class Kernel>
|
||||
bool
|
||||
PolyMeshT<Kernel>::
|
||||
@@ -509,6 +529,17 @@ calc_vertex_normal_loop(VertexHandle _vh, Normal& _n) const
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
template<class Kernel>
|
||||
typename PolyMeshT<Kernel>::Normal
|
||||
PolyMeshT<Kernel>::
|
||||
calc_normal(VertexHandle _vh) const
|
||||
{
|
||||
Normal n;
|
||||
calc_vertex_normal_correct(_vh, n);
|
||||
return n;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
template <class Kernel>
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user