# Find 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 using the technique in [1]. The groups of Triangles over which to compute the curvatures is determines by the Features they are associated, denoted by their Face Labels. The curvature information will be stored in a Face Attribute Matrix.

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

@image latex FeatureFaceCurvatureFilter.png "Curvature Coloring of a Feature" width = 6in

## Parameters¶

Name Type Description
Neighborhood Ring Count int32_t The size of the neighborhood to use to calculate the curvature values
Compute Principal Direction Vectors bool Whether to compute the principal direction vectors
Compute Gaussian Curvature bool Whether to compute the Gaussian curvature values
Compute Mean Curvature bool Whether to compute the mean curvature values
Use Face Normals for Curve Fitting bool Whether to use the Face normals to improve the least squares fit

Triangle

## Required Objects¶

Kind Default Name Type Component Dimensions Description
Attribute Matrix FaceData Face N / A Specifies which Attribute Matrix to store the results
Face Attribute Array FaceLabels int32_t (2) Specifies which Features are on either side of each Face
Face Attribute Array FeatureFaceIds int32_t (1) Specifies to which Feature boundary each Face belongs
Face Attribute Array FaceNormals double (3) Specifies the normal of each Face
Face Attribute Array FaceCentroids double (3) Specifies the centroid of each Face

## Created Objects¶

Kind Default Name Type Component Dimensions Description
Face Attribute Array PrincipalCurvature1 double (1) First set eigenvalues of the Wiengarten matrix (κ1). Only created if Compute Principal Direction Vectors is checked
Face Attribute Array PrincipalCurvature2 double (1) Second set eigenvalues of the Wiengarten matrix (κ2). Only created if Compute Principal Direction Vectors is checked
Face Attribute Array PrincipalDirection1 double (3) First set of eigenvectors. Only created if Compute Principal Direction Vectors is checked
Face Attribute Array PrincipalDirection2 double (3) Second set of eigenvectors. Only created if Compute Principal Direction Vectors is checked
Face Attribute Array MeanCurvatures double (1) Mean curvature values. Only created if Compute Mean Curvature is checked
Face Attribute Array GaussianCurvatures double (1) Gaussian curvature values. Only created if Compute Gaussian Curvature is checked

## 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¶

Please see the description file distributed with thisPlugin