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