MSDM
 All Classes Namespaces Files Functions Variables Typedefs Pages
Functions
NormalCycle Namespace Reference

Estimation of principale curvatures based on the normal cycle. More...

Functions

mwSize principal_curvatures (Polyhedron &pMesh, const MSDM_options &options)
 principal curvature for all vertices. More...
 
bool normal_cycle_1ring (Polyhedron::Vertex_const_handle pVertex, Eigen::Matrix3d &CovMat)
 tensor for a vertex using 1-ring neighborhood. More...
 
bool normal_cycle_patch (Polyhedron::Vertex_const_handle pVertex, Eigen::Matrix3d &CovMat, double radius)
 tensor for a vertex using patch neighborhood. More...
 
bool tensor2Curvatures (Polyhedron::Vertex_handle &pVertex, const Eigen::Matrix3d &CovMat, double radius=1)
 Estimate curvatures from tensor. More...
 

Detailed Description

Estimation of principale curvatures based on the normal cycle.

Author
Guillaume Lavoué, Xavier Rolland-Nevière

According to: Restricted Delaunay Triangulations and Normal Cycle, David Cohen-Steiner and J.M. Morvan In Proceedings SoCG'03.

Function Documentation

bool NormalCycle::normal_cycle_1ring ( Polyhedron::Vertex_const_handle  pVertex,
Eigen::Matrix3d &  CovMat 
)
inline

tensor for a vertex using 1-ring neighborhood.

Parameters
pVertexVertex to be analyzed.
[out]CovMatintegral of the curvature tensor.
Returns
true if computation succeeds.

Compute the normal cycle on the 1 ring neighborhood around a vertex.

bool NormalCycle::normal_cycle_patch ( Polyhedron::Vertex_const_handle  pVertex,
Eigen::Matrix3d &  CovMat,
double  radius 
)
inline

tensor for a vertex using patch neighborhood.

Parameters
pVertexVertex to be analyzed.
[out]CovMatintegral of the curvature tensor.
radiusRadius of the neighborhood patch
Returns
true if computation succeeds.

Compute the normal cycle on a surface patch neighborhood around a vertex.

See also
sphere_clip_vector
mwSize NormalCycle::principal_curvatures ( Polyhedron pMesh,
const MSDM_options options 
)

principal curvature for all vertices.

Parameters
pMeshMesh to be analyzed.
optionsParameter settings for the curvature analysis.
Returns
Number of failures in the curvature estimation process

This function is procedure is multithreaded. Curvatures are estimated using the normal cycle, either integrated on the 1-ring neighborhood, or a local Euclidean-based neighborhood.

bool NormalCycle::tensor2Curvatures ( Polyhedron::Vertex_handle &  pVertex,
const Eigen::Matrix3d &  CovMat,
double  radius = 1 
)
inline

Estimate curvatures from tensor.

Parameters
[out]pVertexVertex whose curvatures are to be computed
CovMatCurvature tensor
radiusScale mean curvature
Returns
true if computation succeeds.

The estimated curvature tensor around the vertex query is eigendecomposed. The eigenvalues and eigenvectors correspond to the principal curvatures of the vertex, which are updated accordingly.

The MSDM uses a scaled mean curvature at each vertex, which is computed here.

Some parts of the principal curvature computation that are not needed in the MSDM are skipped. More precisely:

  • The computation of the principal direction is not performed.
  • The curvatures stay unsigned (not oriented w.r.t. the normal).

The MSDM indeed uses \(0.5\times(|\kappa_{\min}|+\kappa_{\max})\times \mathrm{radius}\) in the distance computation.