Inertia tensor of triangle

The inertia tensor 
\mathbf{J} of a triangle (like the inertia tensor of any body) can be expressed in terms of covariance 
\mathbf{C} of the body:


\mathbf{J} = \mathrm{tr}(\mathbf{C})\mathbf{I} - \mathbf{C}

where covariance is defined as area integral over the triangle:


\mathbf{C} \triangleq \int_{\Delta} \rho \mathbf{x}\mathbf{x}^{\mathrm{T}} \, dA

Covariance for a triangle in three-dimensional space, assuming that mass is equally distributed over the surface with unit density, is


\mathbf{C} = a \mathbf{V}^{\mathrm{T}} \mathbf{S} \mathbf{V}

where

Substitution of triangle covariance in definition of inertia tensor gives eventually


\mathbf{J} = \frac{a}{24}(\mathbf{v}^2_0 + \mathbf{v}^2_1 + \mathbf{v}^2_2 + (\mathbf{v}_0 + \mathbf{v}_1 + \mathbf{v}_2)^2)\mathbf{I} - a \mathbf{V}^{\mathrm{T}} \mathbf{S} \mathbf{V}

A proof of the formula

The proof given here follows the steps from the article.[1]

Covariance of a canonical triangle

Let's compute covariance of the right triangle with the vertices (0,0,0), (1,0,0), (0,1,0).

Following the definition of covariance we receive


\mathbf{C}^0_{xx} = \int_{\Delta} x^2 \, dA = \int_{x=0}^1 x^2 \int_{y=0}^{1-x} \, dy \, dx = \int_0^1 x^2 (1-x) \, dx = \frac{1}{12}

\mathbf{C}^0_{xy} = \int_{\Delta} xy \, dA = \int_{x=0}^1 x \int_{y=0}^{1-x} y \, dy \, dx = \int_0^1 x \frac{(1-x)^2}{2} \, dx = \frac{1}{24}

\mathbf{C}^0_{yy} = \mathbf{C}^0_{xx}

The rest components of C are zero because the triangle is in z=0.

As a result


\mathbf{C}^0 = 
\frac{1}{24}
\begin{bmatrix}
2 & 1 & 0 \\
1 & 2 & 0 \\
0 & 0 & 0 \\
\end{bmatrix}
=
\frac{1}{48}
\begin{bmatrix} 1 \\ -1 \\ 0 \end{bmatrix}
\begin{bmatrix} 1 & -1 & 0 \end{bmatrix}^{\mathrm{T}}
+
\frac{1}{16}
\begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix}
\begin{bmatrix} 1 & 1 & 0 \end{bmatrix}^{\mathrm{T}}

Covariance of the triangle with a vertex in the origin

Consider a linear operator

\mathbf{x}' = \mathbf{A}\mathbf{x}^0

that maps the canonical triangle in the triangle \mathbf{v}'_0 = \mathbf{0}, \mathbf{v}'_1 = \mathbf{v}_1 - \mathbf{v}_0, \mathbf{v}'_2 = \mathbf{v}_2 - \mathbf{v}_0. The first two columns of \mathbf{A} contain \mathbf{v}'_1 and \mathbf{v}'_2 respectively, while the third column is arbitrary. The target triangle is equal to the triangle in question (in particular their areas are equal), but shifted with its zero vertex in the origin.


\mathbf{C}' = \int_{\Delta'} \mathbf{x}'\mathbf{x}'^{\mathrm{T}} \, dA'
= \int_{\Delta^0} \mathbf{A}\mathbf{x}^0\mathbf{x}^{0\mathrm{T}}\mathbf{A}^{\mathrm{T}} a\, dA^0
= a \mathbf{A} \mathbf{C}^0 \mathbf{A}^{\mathrm{T}}

\mathbf{C}' = 
\frac{a}{48}(\mathbf{v}_1 - \mathbf{v}_2)(\mathbf{v}_1 - \mathbf{v}_2)^{\mathrm{T}}
+\frac{a}{16}(\mathbf{v}_1 + \mathbf{v}_2 - 2\mathbf{v}_0)(\mathbf{v}_1 + \mathbf{v}_2 - 2\mathbf{v}_0)^{\mathrm{T}}

Covariance of the triangle in question

The last thing remaining to be done is to conceive how covariance is changed with the translation of all points on vector \mathbf{v}_0.


\mathbf{C} = \int_{\Delta} (\mathbf{x'}+\mathbf{v}_0)(\mathbf{x'}+\mathbf{v}_0)^{\mathrm{T}} \, dA = \mathbf{C}' + \frac{a}{2}(\mathbf{v}_0\mathbf{v}_0^{\mathrm{T}} + \mathbf{v}_0\overline{\mathbf{x}}'^{\mathrm{T}} +\overline{\mathbf{x}}'\mathbf{v}_0^{\mathrm{T}})

where

\overline{\mathbf{x}}'=\int_{\Delta'} \mathbf{x}' \, dA' = \frac{1}{3}(\mathbf{v}'_1 + \mathbf{v}'_2)
= \frac{1}{3}(\mathbf{v}_1 + \mathbf{v}_2 - 2\mathbf{v}_0)

is the centroid of dashed triangle.

It's easy to check now that all coefficients in \mathbf{C} before \mathbf{v}_i\mathbf{v}_i^{\mathrm{T}} is \frac{a}{12} and before \mathbf{v}_i\mathbf{v}_j^{\mathrm{T}}\;(i \ne j) is \frac{a}{24}. This can be expressed in matrix form with \mathbf{S} as above.

References

  1. http://number-none.com/blow/inertia/bb_inertia.doc Jonathan Blow, Atman J Binstock (2004) "How to find the inertia tensor (or other mass properties) of a 3D solid body represented by a triangle mesh"