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)