Skip to content

Principal Curvature Directions

https://en.wikipedia.org/wiki/Principal_curvature

PrincipalDirections

Principal curvature directions as a frame field.

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 3.

curv_threshold float

On vertices only. Threshold on the eigenvalues of the shape operator. If smaller, eigenvectors will not be extracted (curvature is too small). Defaults to 0.01.

complete_ff bool

Whether to smoothly interpolate directions on low curvature areas (< curv_threshold). Defaults to True.

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

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

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

Example

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