Curvature of a triangular mesh


Defining and giving the formula to compute the curvature of a mesh at some vertices.

Normal curvature

By intersecting a surface with a plane we see that the section defines a curve:

The curvature of this curve is called 'normal curvature' since the plane is spanned through the normal \( \boldsymbol n\) and an arbitrary tangent vector \( \boldsymbol t \). Now, given a point \( \boldsymbol p \) of the surface you can find an infinity of curvatures given the direction you choose for your tangent vector \( \boldsymbol t \). 

Principal curvatures

But how can we characterized the curvature of a surface at a given point when we seem to have an infinity of curvatures? Don't worry! It can be shown that when rotating the normal plane around \( \boldsymbol n \) you can always find two 'principal curvatures' \( k_1 \) and \( k_2 \) respectively defining the maximal and minimal curvature at a given point \( \boldsymbol p \) of the surface:

In addition, the principal curvatures \( k_1 \) and \( k_2 \) are associated to the 'principal directions' \( \boldsymbol t_1 \) and \( \boldsymbol t_2 \) which are always found to be orthogonal to each other! What's more, you can define any 'normal curvature' \( k_n \) as a combination of the principal curvatures \( k_1 \) and \( k_2 \) using Euler's theorem below:

\[ k_n = k_1\cos^2\theta + k_2\sin^2\theta \]

Where \( \theta \) is the angle between \( \boldsymbol t_1 \) (maximal curvature direction) and \( \boldsymbol t_n \) the normal curvature.

Calculation

One can compute the principal curvatures according to the Mean curvature \( H \) and the Gaussian curvature \( k_g \) (that we define later in the post):

$$
\begin{align*}
k_1 & = H + \sqrt{ H^2 - k_g} \\
k_2 & = H - \sqrt{ H^2 - k_g}
\end{align*}
$$

Gaussian curvature

The Gaussian is the product of principal curvatures \( k_g = k_1 * k_2 \) on a triangular mesh it can be computed at vertex \( \boldsymbol p_i \) as follows:

\[ k_g = \frac{ 2 \pi - \sum \theta_j } { A_i } \]

Where the angle \( \theta_j \) is defined as:

\( A_i \) can be computed as:

Interpreting the Gaussian curvature's value

It can help to locally characterize the shape:

Mean curvature

The mean curvature is the average of the principal curvatures:

$$ H= \frac { k_1 + k_2 } { 2 } $$

In addition, the mean curvature can also be expressed using the Laplace operator:

$$ H = \frac{ \| \Delta p_i \|}{ 2 } $$

In other words, to find the mean curvature for a triangle mesh, we need to apply the discrete Laplace operator at some vertex \( \boldsymbol p_i \) as follows:

$$ \Delta \vec p_i = \frac{1} {2A_i} \sum\limits_{{j \in \mathcal N(i)}} { (\cot \alpha_{ij} + \cot \beta_{ij}) (p_j - p_i) } $$

Interpreting the Mean curvature's value

It does not characterize the shape but gives the amount of curvature in one way or another:

Gaussian VS Mean curvature

References

Discrete Differential-Geometry Operatorsfor Triangulated 2-Manifolds
Polygon mesh processing

No comments

All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.
Anti-spam question: