Skip to content

Directions of Curvature

The principal directions of curvature are the two tangent eigenvectors of the curvature tensor of a surface (https://en.wikipedia.org/wiki/Principal_curvature). In practice, they are always orthogonal to each other and point towards the directions where curvature varies the fastest and the slowest.

PrincipalDirections

Usage

from mouette import framefield
ff = framefield.PrincipalDirections(mesh, "vertices", features=True, verbose=True, n_smooth=3)
ff.run()
ff.flag_singularities()

Parameters:

Name Type Description Default
mesh SurfaceMesh

the supporting mesh onto which the framefield is based

required
elements str

"vertices" or "faces", the mesh elements onto which the frames live.

required

Other Parameters:

Name Type Description
features bool

Whether to consider feature edges or not. If no 'custom_features' argument is provided, features will be automatically detected (see the FeatureEdgeDetector class). Defaults to True.

verbose bool

verbose mode. Defaults to False.

n_smooth int

Number of smoothing steps to perform. Defaults to 1.

smooth_attach_weight float

Custom attach weight to previous solution during smoothing steps. If not provided, will be estimated at 1 for vertex version and 1e-3 for faces version. Defaults to None.

patch_size int

On vertices only. Radius (in nubmer of edges) of the neighboring patch to be considered to approximate the shape operator. Defaults to 2.

confidence_threshold float

On vertices only. Threshold on the anisotropy of the shape operator. Great anisotropy values (between 0 and 1) give good confidence on the principal directions. If the confidence is smaller than the threshold, eigenvectors will not be extracted and will instead be harmonically filled in. Defaults to 0.5.

smooth_threshold float

On vertices only. Threshold on the anisotropy of the shape operator. Points with a confidence value higher than the threshold will be considered fixed during smoothing. Ignored is n_smooth is 0. Defaults to 0.7.

custom_connection SurfaceConnection

custom connection object to be used for parallel transport. If not provided, a connection will be automatically computed (see SurfaceConnection class). Defaults to None.

custom_features FeatureEdgeDetector

custom feature edges to be used in frame field optimization. If not provided, feature edges will be automatically detected. If the 'features' flag is set to False, features of this object are ignored. Defaults to None.

Returns:

Name Type Description
Framefield FrameField

a frame field object representing the curvature directions

Note

Order of the frame field is fixed at 4 since principal curvature directions form an orthonormal basis.

References
  • [1] https://en.wikipedia.org/wiki/Principal_curvature

  • [2] Restricted Delaunay Triangulations and Normal Cycle, Cohen-Steiner and Morvan (2003)

Example

https://github.com/GCoiffier/mouette/blob/main/examples/framefield2D.py