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

- '
*mixed voronoi area'*. - '
*barycentric cell area*' (sum of the triangles' area adjacent to \(i\) times 3): \( A_i = 3 \sum\limits_{{T_j \in \mathcal N(i)}} {area(T_j)} \)

### Interpreting the Gaussian curvature's value

It can help to locally characterize the shape:

- \( k_g > 0\) means surface is locally a bowl-like shape. (elliptical point)
- \( k_g < 0\) means surface is locally a saddle-like shape. (hyperbolic point)
- \( k_g = 0\) means surface is locally flat in at least one direction (parabolic point)

## 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) } $$

- \( {j \in \mathcal N(i)} \) is the list of vertices directly adjacent to the vertex \( i \)
- \(\cot \alpha_{ij} + \cot \beta_{ij}\) are the famous cotangent weights (a real value)
- \( p_i, p_j, ...\) vertices position.
- \( A_i \) is the cell area as described earlier (a real value).

### Interpreting the Mean curvature's value

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

- \( H = 0 \) -> saddle or flat surface
- \( H > 0 \) -> amount of convexity (peak)
- \( H < 0 \) -> amount of concavity (pit)

## Gaussian VS Mean curvature

## References

Discrete Differential-Geometry Operatorsfor Triangulated 2-Manifolds

Polygon mesh processing

No comments