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... | |
Estimation of principale curvatures based on the normal cycle.
According to: Restricted Delaunay Triangulations and Normal Cycle, David Cohen-Steiner and J.M. Morvan In Proceedings SoCG'03.
|
inline |
tensor for a vertex using 1-ring neighborhood.
pVertex | Vertex to be analyzed. | |
[out] | CovMat | integral of the curvature tensor. |
Compute the normal cycle on the 1 ring neighborhood around a vertex.
|
inline |
tensor for a vertex using patch neighborhood.
pVertex | Vertex to be analyzed. | |
[out] | CovMat | integral of the curvature tensor. |
radius | Radius of the neighborhood patch |
Compute the normal cycle on a surface patch neighborhood around a vertex.
mwSize NormalCycle::principal_curvatures | ( | Polyhedron & | pMesh, |
const MSDM_options & | options | ||
) |
principal curvature for all vertices.
pMesh | Mesh to be analyzed. |
options | Parameter settings for the curvature analysis. |
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.
|
inline |
Estimate curvatures from tensor.
[out] | pVertex | Vertex whose curvatures are to be computed |
CovMat | Curvature tensor | |
radius | Scale mean curvature |
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 MSDM indeed uses \(0.5\times(|\kappa_{\min}|+\kappa_{\max})\times \mathrm{radius}\) in the distance computation.