Curvature of a triangle mesh, definition and computation. Defining and giving the formula to compute the curvature over a triangle 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$$ on 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 characterize 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 $$k_1$$ and $$k_2$$ according to the Mean curvature $$H$$ and the Gaussian curvature $$k_g$$, don't worry we will define both $$H$$ and $$k_g$$ in the next sections:

\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 