10.30. Compute Feature Face Curvature

Group (Subgroup)

Surface Meshing (Curvature)

Description

This filter calculates principal direction vectors and the principal curvatures, and optionally the mean and Gaussian curvature, for each Triangle in a Triangle Geometry (a surface mesh built from triangles) using the technique in [1]. The groups of Triangles over which to compute the curvatures are determined by the Features they belong to, as denoted by their Face Labels (the pair of Feature Ids on either side of each triangle). The curvature information is stored in a Face Attribute Matrix.

Curvature measures how sharply the surface bends at a point: a flat region has zero curvature, while a tightly rounded region has high curvature. The principal curvatures are the maximum and minimum bending values at a point, and the principal directions are the (unit) directions along the surface in which those extreme bends occur.

Principal Curvatures 1 and 2 are the κ1 and κ2 from [1] and are the eigenvalues of the Weingarten matrix. The Principal Directions 1 and 2 are the eigenvectors from the solution to the least-squares fit. The Mean Curvature is (κ1 + κ2) / 2, while the Gaussian curvature is (κ1 * κ2).

The principal directions can have their signs flipped: they come from eigenvectors, which are unique only up to a sign.

Note: Computing the Weingarten matrix values is an experimental feature, and there is no guarantee at this time that the values are correct.

Units

Principal curvatures and mean curvature are reported in 1/length (the reciprocal of the geometry length units; the radius of the best-fit circle is its reciprocal). Gaussian curvature, being a product of two curvatures, is reported in 1/length^2. Principal directions are dimensionless unit 3-vectors.

Curvature Coloring

Ring Neighbor Schematic

Ring Neighbor Schematic

Required Input Sources

Input Parameter(s)

Parameter Name

Parameter Type

Parameter Notes

Description

Triangle Geometry

Geometry Selection

Triangle

The input Triangle Geometry to compute the curvature values

Neighborhood Ring Count

Scalar Value

Int32

The number of ring neighbors to use

Compute Principal Direction Vectors

Bool

Compute the Principal Direction Vectors

Compute Gaussian Curvature

Bool

Compute the Gaussian Curvature values

Compute Mean Curvature

Bool

Compute the Mean Curvature values

Compute Weingarten Matrix

Bool

Compute the Weingarten Matrix values

Use Face Normals for Curve Fitting

Bool

Use the face normals for curve fitting.

Input Triangle Face Data

Parameter Name

Parameter Type

Parameter Notes

Description

Face Attribute Matrix

AttributeMatrixSelection

The AttributeMatrix that holds the triangle face data.

Face Labels

Array Selection

Allowed Types: int32 Comp. Shape: 2

The DataPath to the ‘Face Labels’ DataArray

Feature Face Ids

Array Selection

Allowed Types: int32 Comp. Shape: 1

The DataPath to the ‘FeatureIds’ DataArray

Face Normals

Array Selection

Allowed Types: float64 Comp. Shape: 3

The DataPath to the ‘Feature Normals’ DataArray

Face Centroids

Array Selection

Allowed Types: float64 Comp. Shape: 3

The DataPath to the ‘Face Centroids’ DataArray

Output Face Data

Parameter Name

Parameter Type

Parameter Notes

Description

Principal Curvature 1

ArrayCreation

Output DataPath to hold the ‘Principal Curvature 1’ values

Principal Curvature 2

ArrayCreation

Output DataPath to hold the ‘Principal Curvature 2’ values

Principal Direction 1

ArrayCreation

Output DataPath to hold the ‘Principal Direction 1’ values

Principal Direction 2

ArrayCreation

Output DataPath to hold the ‘Principal Direction 2’ values

Gaussian Curvature

ArrayCreation

Output DataPath to hold the ‘Gaussian Curvature’ values

Mean Curvature

ArrayCreation

Output DataPath to hold the ‘Mean Curvature’ values

Weingarten Matrix

ArrayCreation

Output DataPath to hold the ‘Weingarten Matrix’ values

References

[1] J. Goldfeather, V. Interrante, “A Novel Cubic-Order Algorithm for Approximating Principal Direction Vectors”, ACM Transactions on Graphics 2004, 23(1), pp. 45 - 63.

Example Pipelines

  • Compute_Feature_Face_Curvature

  • Compute_Feature_Face_Curvature_2

DREAM3D-NX Help

If you need help, need to file a bug report or want to request a new feature, please head over to the DREAM3DNX-Issues GitHub site where the community of DREAM3D-NX users can help answer your questions.