Section 21.1 of Chapter 21: Finite rotations

Finite rotations

01

Finite rotations, 2D case

Consider a vector v0\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0, having length vv, and rotate it by an angle φ\varphi about the zz-axis (the axis perpendicular to the plane). This gives the vector v\htmlClass{fea-math-bold-italic}{\boldsymbol v}.

Vector v0 rotated by angle phi in the xy plane
Figure 1. Finite rotation in the plane.

We can write successively:

v0={vcosαvsinα}\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0=\begin{Bmatrix}v\mathop{\mathit{cos}}\alpha\\v\mathop{\mathit{sin}}\alpha\end{Bmatrix}
v={vcos(α+φ)vsin(α+φ)}={v(cosαcosφ−sinαsinφ)v(cosαsinφ+sinαcosφ)}=[cosφ−sinφsinφcosφ]⏟R{vcosαvsinα}⏟v0.\begin{aligned}\htmlClass{fea-math-bold-italic}{\boldsymbol v}&=\begin{Bmatrix}v\mathop{\mathit{cos}}(\alpha+\varphi)\\v\mathop{\mathit{sin}}(\alpha+\varphi)\end{Bmatrix}\\&=\begin{Bmatrix}v(\mathop{\mathit{cos}}\alpha\mathop{\mathit{cos}}\varphi-\mathop{\mathit{sin}}\alpha\mathop{\mathit{sin}}\varphi)\\v(\mathop{\mathit{cos}}\alpha\mathop{\mathit{sin}}\varphi+\mathop{\mathit{sin}}\alpha\mathop{\mathit{cos}}\varphi)\end{Bmatrix}\\&=\underbrace{\begin{bmatrix}\mathop{\mathit{cos}}\varphi&-\mathop{\mathit{sin}}\varphi\\\mathop{\mathit{sin}}\varphi&\mathop{\mathit{cos}}\varphi\end{bmatrix}}_{\htmlClass{fea-math-bold-italic}{\boldsymbol R}}\underbrace{\begin{Bmatrix}v\mathop{\mathit{cos}}\alpha\\v\mathop{\mathit{sin}}\alpha\end{Bmatrix}}_{\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0}.\end{aligned}

And finally:

v=Rv0,R=[cosφ−sinφsinφcosφ].\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol R}\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0,\qquad\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\begin{bmatrix}\mathop{\mathit{cos}}\varphi&-\mathop{\mathit{sin}}\varphi\\\mathop{\mathit{sin}}\varphi&\mathop{\mathit{cos}}\varphi\end{bmatrix}.

If the angle φ\varphi is very small, we can write, considering that cosφ≈1\mathop{\mathit{cos}}\varphi\approx1 and sinφ≈φ\mathop{\mathit{sin}}\varphi\approx\varphi:

R≈[1−φφ1].\htmlClass{fea-math-bold-italic}{\boldsymbol R}\approx\begin{bmatrix}1&-\varphi\\\varphi&1\end{bmatrix}.

02

Infinitesimal rotations

A rotation is represented by a magnitude, the angle of rotation, and a direction, the axis of rotation. Let’s consider the magnitude φ\varphi and the axis defined by the unit vector n\htmlClass{fea-math-bold-italic}{\boldsymbol n}.

For an infinitesimal rotation, the rotation can be represented by a vector:

φ=φn,orφ={φxφyφz}.\htmlClass{fea-math-bold-italic}{\boldsymbol{\varphi}}=\varphi\htmlClass{fea-math-bold-italic}{\boldsymbol n},\qquad\mathit{or}\qquad\htmlClass{fea-math-bold-italic}{\boldsymbol{\varphi}}=\begin{Bmatrix}\varphi_x\\\varphi_y\\\varphi_z\end{Bmatrix}.

And:

φ=∥φ∥=φx2+φy2+φz2.\varphi=\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol{\varphi}}\rVert=\sqrt{\varphi_x^2+\varphi_y^2+\varphi_z^2}.

The components of rotation, φx\varphi_x, φy\varphi_y, φz\varphi_z, are very small and are treated as infinitesimal values. The corresponding rotation matrix is:

R=RzRyRx=[1−φz0φz10001][10φy010−φy01][10001−φx0φx1]⟶R=[1−φzφyφz1−φx−φyφx1].\begin{aligned}\htmlClass{fea-math-bold-italic}{\boldsymbol R}&=\htmlClass{fea-math-bold-italic}{\boldsymbol R}_z\htmlClass{fea-math-bold-italic}{\boldsymbol R}_y\htmlClass{fea-math-bold-italic}{\boldsymbol R}_x\\&=\begin{bmatrix}1&-\varphi_z&0\\\varphi_z&1&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&\varphi_y\\0&1&0\\-\varphi_y&0&1\end{bmatrix}\begin{bmatrix}1&0&0\\0&1&-\varphi_x\\0&\varphi_x&1\end{bmatrix}\\&\longrightarrow\quad\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\begin{bmatrix}1&-\varphi_z&\varphi_y\\\varphi_z&1&-\varphi_x\\-\varphi_y&\varphi_x&1\end{bmatrix}.\end{aligned}

The terms of the second and third degrees were neglected, and it was assumed that:

sinφ≃φ,cosφ≃1.\mathop{\mathit{sin}}\varphi\simeq\varphi,\qquad\mathop{\mathit{cos}}\varphi\simeq1.

In fact, the rotation φ\htmlClass{fea-math-bold-italic}{\boldsymbol{\varphi}} is the resultant of three rotations, the vector sum of three vectors:

φ={φxφyφz}={φx00}+{0φy0}+{00φz}.\htmlClass{fea-math-bold-italic}{\boldsymbol{\varphi}}=\begin{Bmatrix}\varphi_x\\\varphi_y\\\varphi_z\end{Bmatrix}=\begin{Bmatrix}\varphi_x\\0\\0\end{Bmatrix}+\begin{Bmatrix}0\\\varphi_y\\0\end{Bmatrix}+\begin{Bmatrix}0\\0\\\varphi_z\end{Bmatrix}.

Composition of small (infinitesimal) rotations is commutative!

03

Finite rotations

Let’s find the rotation matrix R\htmlClass{fea-math-bold-italic}{\boldsymbol R} if the rotation angle is finite. In this case, finite rotations do not follow the parallelogram law of vector addition. Moreover, the composition of rotations is non-commutative.

The problem: consider a vector v0\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0 and rotate it by an angle φ\varphi around the axis having the direction of the unit vector n\htmlClass{fea-math-bold-italic}{\boldsymbol n}; the new position of the vector is v\htmlClass{fea-math-bold-italic}{\boldsymbol v}. We have to find the matrix R\htmlClass{fea-math-bold-italic}{\boldsymbol R}, [1], [2], [3], [4]:

v=R(φ)v0.\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol R}(\varphi)\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0.

This is called an active rotation: the vector is rotated while the reference frame remains fixed.

Rotation of vector v0 about the axis nDisplacement of P to Q on the circle of radius a
Figure 2. Rotation about the axis n\htmlClass{fea-math-bold-italic}{\boldsymbol n} and the corresponding circular motion.

Vector sum:

v=v0+Δv.\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0+\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol v}.
Δv=PD‾+DQ‾⟶v=v0+PD‾+DQ‾.\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\overline{PD}+\overline{DQ}\quad\longrightarrow\quad\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0+\overline{PD}+\overline{DQ}.

Vector DQ‾\overline{DQ} has the direction of the cross product n×v0\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0 because DQ‾\overline{DQ} is perpendicular to the plane (n,v0)(\htmlClass{fea-math-bold-italic}{\boldsymbol n},\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0).

The modulus of n×v0\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0 is:

∥n×v0∥=∥v∥sinα⟶∥n×v0∥=a.\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\rVert=\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol v}\rVert\mathop{\mathit{sin}}\alpha\quad\longrightarrow\quad\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\rVert=a.

As:

DQ=asinφ,DQ=a\mathop{\mathit{sin}}\varphi,

we get:

DQ‾=(n×v0)sinφ.\overline{DQ}=(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\mathop{\mathit{sin}}\varphi.

Vector PD‾\overline{PD}. The modulus:

PD=a−acosφ=2asin2φ2.PD=a-a\mathop{\mathit{cos}}\varphi=2a\mathop{\mathit{sin}}^2\frac{\varphi}{2}.

Obviously, n\htmlClass{fea-math-bold-italic}{\boldsymbol n} is perpendicular to n×v0\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0, and thus n×(n×v0)\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0) has the direction of vector PD‾\overline{PD}. But:

∥n×(n×v0)∥=∥n×v0∥=a,\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\rVert=\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\rVert=a,

therefore:

PD‾=2(n×(n×v0))sin2φ2.\overline{PD}=2\bigl(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\bigr)\mathop{\mathit{sin}}^2\frac{\varphi}{2}.

The relation between v\htmlClass{fea-math-bold-italic}{\boldsymbol v} and v0\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0:

v=v0+(n×v0)sinφ+2(n×(n×v0))sin2φ2,\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0+(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\mathop{\mathit{sin}}\varphi+2\bigl(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\bigr)\mathop{\mathit{sin}}^2\frac{\varphi}{2},

or:

v=v0+(n×v0)sinφ+(n×(n×v0))(1−cosφ).(*)\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0+(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\mathop{\mathit{sin}}\varphi+\bigl(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\bigr)(1-\mathop{\mathit{cos}}\varphi).\tag{*}

To convert this equation into matrix form, we introduce the notations:

n={nxnynz},nx2+ny2+nz2=1.\htmlClass{fea-math-bold-italic}{\boldsymbol n}=\begin{Bmatrix}n_x\\n_y\\n_z\end{Bmatrix},\qquad n_x^2+n_y^2+n_z^2=1.
n×v0 ⟶ [0−nznynz0−nx−nynx0]{v0xv0yv0z}.\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\ \longrightarrow\ \begin{bmatrix}0&-n_z&n_y\\n_z&0&-n_x\\-n_y&n_x&0\end{bmatrix}\begin{Bmatrix}v_{0x}\\v_{0y}\\v_{0z}\end{Bmatrix}.

Or:

n×v0 ⟶ n~v0,\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\ \longrightarrow\ \widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0,

with:

n~=[0−nznynz0−nx−nynx0].\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}=\begin{bmatrix}0&-n_z&n_y\\n_z&0&-n_x\\-n_y&n_x&0\end{bmatrix}.
n×(n×v0) ⟶ n~ 2v0,\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times(\htmlClass{fea-math-bold-italic}{\boldsymbol n}\times\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0)\ \longrightarrow\ \widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}^{\,2}\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0,

where:

n~ 2=n~n~=[−(ny2+nz2)nxnynznxnxny−(nz2+nx2)nynznznxnynz−(nx2+ny2)].\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}^{\,2}=\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}=\begin{bmatrix}-(n_y^2+n_z^2)&n_xn_y&n_zn_x\\n_xn_y&-(n_z^2+n_x^2)&n_yn_z\\n_zn_x&n_yn_z&-(n_x^2+n_y^2)\end{bmatrix}.

This gives:

v=(E+sinφ n~+(1−cosφ)n~ 2)v0⟶v=Rv0.\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\bigl(\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\mathop{\mathit{sin}}\varphi\,\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}+(1-\mathop{\mathit{cos}}\varphi)\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}^{\,2}\bigr)\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0\quad\longrightarrow\quad\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\htmlClass{fea-math-bold-italic}{\boldsymbol R}\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0.

E\htmlClass{fea-math-bold-italic}{\boldsymbol E} is the unit matrix. That is, equation (*) becomes:

R=E+sinφ n~+(1−cosφ)n~ 2.(**)\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\mathop{\mathit{sin}}\varphi\,\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}+(1-\mathop{\mathit{cos}}\varphi)\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}^{\,2}.\tag{**}

Finally:

R=[cosφ+nx2(1−cosφ)nxny(1−cosφ)−nzsinφnznx(1−cosφ)+nysinφnxny(1−cosφ)+nzsinφcosφ+ny2(1−cosφ)nynz(1−cosφ)−nxsinφnznx(1−cosφ)−nysinφnynz(1−cosφ)+nxsinφcosφ+nz2(1−cosφ)].\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\begin{bmatrix}\mathop{\mathit{cos}}\varphi+n_x^2(1-\mathop{\mathit{cos}}\varphi)&n_xn_y(1-\mathop{\mathit{cos}}\varphi)-n_z\mathop{\mathit{sin}}\varphi&n_zn_x(1-\mathop{\mathit{cos}}\varphi)+n_y\mathop{\mathit{sin}}\varphi\\n_xn_y(1-\mathop{\mathit{cos}}\varphi)+n_z\mathop{\mathit{sin}}\varphi&\mathop{\mathit{cos}}\varphi+n_y^2(1-\mathop{\mathit{cos}}\varphi)&n_yn_z(1-\mathop{\mathit{cos}}\varphi)-n_x\mathop{\mathit{sin}}\varphi\\n_zn_x(1-\mathop{\mathit{cos}}\varphi)-n_y\mathop{\mathit{sin}}\varphi&n_yn_z(1-\mathop{\mathit{cos}}\varphi)+n_x\mathop{\mathit{sin}}\varphi&\mathop{\mathit{cos}}\varphi+n_z^2(1-\mathop{\mathit{cos}}\varphi)\end{bmatrix}.

04

Another form of the rotation matrix

Now we introduce this vector:

ρ=φn={φxφyφz},\htmlClass{fea-math-bold-italic}{\boldsymbol{\rho}}=\varphi\htmlClass{fea-math-bold-italic}{\boldsymbol n}=\begin{Bmatrix}\varphi_x\\\varphi_y\\\varphi_z\end{Bmatrix},

and:

φ=φx2+φy2+φz2.\varphi=\sqrt{\varphi_x^2+\varphi_y^2+\varphi_z^2}.

ρ\htmlClass{fea-math-bold-italic}{\boldsymbol{\rho}} may be called a rotation vector or axis-angle vector. However, finite rotations do not compose by ordinary vector addition. Relation (**) between v\htmlClass{fea-math-bold-italic}{\boldsymbol v} and v0\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0 becomes:

v=(E+sinφφρ~+1−cosφφ2ρ~ 2)v0.\htmlClass{fea-math-bold-italic}{\boldsymbol v}=\left(\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\frac{\mathop{\mathit{sin}}\varphi}{\varphi}\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol{\rho}}}+\frac{1-\mathop{\mathit{cos}}\varphi}{\varphi^2}\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol{\rho}}}^{\,2}\right)\htmlClass{fea-math-bold-italic}{\boldsymbol v}_0.

And finally:

R=E+sinφφ[0−φzφyφz0−φx−φyφx0]+1−cosφφ2[−(φy2+φz2)φxφyφzφxφxφy−(φz2+φx2)φyφzφzφxφyφz−(φx2+φy2)].\begin{aligned}\htmlClass{fea-math-bold-italic}{\boldsymbol R}={}&\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\frac{\mathop{\mathit{sin}}\varphi}{\varphi}\begin{bmatrix}0&-\varphi_z&\varphi_y\\\varphi_z&0&-\varphi_x\\-\varphi_y&\varphi_x&0\end{bmatrix}\\&+\frac{1-\mathop{\mathit{cos}}\varphi}{\varphi^2}\begin{bmatrix}-(\varphi_y^2+\varphi_z^2)&\varphi_x\varphi_y&\varphi_z\varphi_x\\\varphi_x\varphi_y&-(\varphi_z^2+\varphi_x^2)&\varphi_y\varphi_z\\\varphi_z\varphi_x&\varphi_y\varphi_z&-(\varphi_x^2+\varphi_y^2)\end{bmatrix}.\end{aligned}

Or:

R=E+sinφ[0−nznynz0−nx−nynx0]+(1−cosφ)[−(ny2+nz2)nxnynznxnxny−(nz2+nx2)nynznznxnynz−(nx2+ny2)].\begin{aligned}\htmlClass{fea-math-bold-italic}{\boldsymbol R}={}&\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\mathop{\mathit{sin}}\varphi\begin{bmatrix}0&-n_z&n_y\\n_z&0&-n_x\\-n_y&n_x&0\end{bmatrix}\\&+(1-\mathop{\mathit{cos}}\varphi)\begin{bmatrix}-(n_y^2+n_z^2)&n_xn_y&n_zn_x\\n_xn_y&-(n_z^2+n_x^2)&n_yn_z\\n_zn_x&n_yn_z&-(n_x^2+n_y^2)\end{bmatrix}.\end{aligned}

05

Small rotation angles

If the angle of rotation φ\varphi is very small:

sinφφ≈1.\frac{\mathop{\mathit{sin}}\varphi}{\varphi}\approx1.

Neglecting second-degree terms:

R=[1−φzφyφz1−φx−φyφx1].\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\begin{bmatrix}1&-\varphi_z&\varphi_y\\\varphi_z&1&-\varphi_x\\-\varphi_y&\varphi_x&1\end{bmatrix}.

If the rotation angle is small and second-order terms are retained, the rotation angles are assumed to be small, but not infinitesimal; therefore, the second-order terms cannot be neglected. Since the rotation matrix contains quadratic terms in the rotation components, the resulting problem is geometrically nonlinear.

sinφφ≈1,1−cosφφ2≈12.\frac{\mathop{\mathit{sin}}\varphi}{\varphi}\approx1,\qquad\frac{1-\mathop{\mathit{cos}}\varphi}{\varphi^2}\approx\frac12.

And:

R=[1−12(φy2+φz2)−φz+12φxφyφy+12φzφxφz+12φxφy1−12(φz2+φx2)−φx+12φyφz−φy+12φzφxφx+12φyφz1−12(φx2+φy2)].\htmlClass{fea-math-bold-italic}{\boldsymbol R}=\begin{bmatrix}1-\frac12(\varphi_y^2+\varphi_z^2)&-\varphi_z+\frac12\varphi_x\varphi_y&\varphi_y+\frac12\varphi_z\varphi_x\\\varphi_z+\frac12\varphi_x\varphi_y&1-\frac12(\varphi_z^2+\varphi_x^2)&-\varphi_x+\frac12\varphi_y\varphi_z\\-\varphi_y+\frac12\varphi_z\varphi_x&\varphi_x+\frac12\varphi_y\varphi_z&1-\frac12(\varphi_x^2+\varphi_y^2)\end{bmatrix}.

06

Example

The 3D part in the figure below must be divided into finite elements. The part can be divided into 12 identical slices. Only one slice will be divided into finite elements, and then, by rotating, reflecting and copying this slice, the entire FE mesh will be obtained.

The 3D part and its complete finite element mesh
Figure 3. The 3D part and its finite element mesh.
One slice, the axes n0 and n, and the twelve transformed slices
Figure 4. One slice and the construction of the complete mesh by rotation and reflection.

One “slice” is depicted in the figure above, on the left. Nodal coordinates are known: x\htmlClass{fea-math-bold-italic}{\boldsymbol x} is a matrix with nn rows and 3 columns (for the three coordinates x,y,zx,y,z); nn is the number of nodes. Coordinates x\htmlClass{fea-math-bold-italic}{\boldsymbol x} are in the global coordinate frame.

Firstly, this slice is rotated around the axis computed using the normalized cross product:

n1=n0×n∥n0×n∥,\htmlClass{fea-math-bold-italic}{\boldsymbol n}_1=\frac{\htmlClass{fea-math-bold-italic}{\boldsymbol n}_0\times\htmlClass{fea-math-bold-italic}{\boldsymbol n}}{\lVert\htmlClass{fea-math-bold-italic}{\boldsymbol n}_0\times\htmlClass{fea-math-bold-italic}{\boldsymbol n}\rVert},

with the angle computed using a dot product:

φ=arccos(n0⋅n).\varphi=\mathop{\mathit{arccos}}(\htmlClass{fea-math-bold-italic}{\boldsymbol n}_0\cdot\htmlClass{fea-math-bold-italic}{\boldsymbol n}).

This gives the rotation matrix R1\htmlClass{fea-math-bold-italic}{\boldsymbol R}_1:

R1=E+sinφ n~1+(1−cosφ)n~1 2.\htmlClass{fea-math-bold-italic}{\boldsymbol R}_1=\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\mathop{\mathit{sin}}\varphi\,\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}_1+(1-\mathop{\mathit{cos}}\varphi)\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}_1^{\,2}.

The new coordinates are:

xn=xR1T+Δx,\htmlClass{fea-math-bold-italic}{\boldsymbol x}_n=\htmlClass{fea-math-bold-italic}{\boldsymbol x}\htmlClass{fea-math-bold-italic}{\boldsymbol R}_1^T+\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol x},

where Δx\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol x} contains the translation components, applied to every row. For our example, the translation is [20105]\begin{bmatrix}20&10&5\end{bmatrix}.

The remaining slices are obtained with the rotation matrix:

Rt=R2R1⟶xn=xRtT+Δx,\htmlClass{fea-math-bold-italic}{\boldsymbol R}_t=\htmlClass{fea-math-bold-italic}{\boldsymbol R}_2\htmlClass{fea-math-bold-italic}{\boldsymbol R}_1\quad\longrightarrow\quad\htmlClass{fea-math-bold-italic}{\boldsymbol x}_n=\htmlClass{fea-math-bold-italic}{\boldsymbol x}\htmlClass{fea-math-bold-italic}{\boldsymbol R}_t^T+\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol x},

where R2\htmlClass{fea-math-bold-italic}{\boldsymbol R}_2 is a rotation around the axis defined by the unit vector n\htmlClass{fea-math-bold-italic}{\boldsymbol n} (see the figure above):

R2=E+sinφ0 n~+(1−cosφ0)n~ 2.\htmlClass{fea-math-bold-italic}{\boldsymbol R}_2=\htmlClass{fea-math-bold-italic}{\boldsymbol E}+\mathop{\mathit{sin}}\varphi_0\,\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}+(1-\mathop{\mathit{cos}}\varphi_0)\widetilde{\htmlClass{fea-math-bold-italic}{\boldsymbol n}}^{\,2}.

Angle φ0\varphi_0 is a multiple of π/3\pi/3. The 12 slices are obtained at six angular positions spaced by π/3\pi/3, with a reflected and a non-reflected slice at each position. For slices 2, 4, 6, 8, 10 and 12, we need to apply a reflection to obtain the circular holes, with each slice having only a “half-hole”. So the transformation matrix becomes:

Rt=R2R1Ra⟶xn=xRtT+Δx,\htmlClass{fea-math-bold-italic}{\boldsymbol R}_t=\htmlClass{fea-math-bold-italic}{\boldsymbol R}_2\htmlClass{fea-math-bold-italic}{\boldsymbol R}_1\htmlClass{fea-math-bold-italic}{\boldsymbol R}_a\quad\longrightarrow\quad\htmlClass{fea-math-bold-italic}{\boldsymbol x}_n=\htmlClass{fea-math-bold-italic}{\boldsymbol x}\htmlClass{fea-math-bold-italic}{\boldsymbol R}_t^T+\mathit{\Delta}\htmlClass{fea-math-bold-italic}{\boldsymbol x},

where:

Ra=[10001000−1].\htmlClass{fea-math-bold-italic}{\boldsymbol R}_a=\begin{bmatrix}1&0&0\\0&1&0\\0&0&-1\end{bmatrix}.

In fact, the matrix Ra\htmlClass{fea-math-bold-italic}{\boldsymbol R}_a allows us to build the symmetric slice with respect to the local xyxy-plane (reflection).

Figure 5. Interactive 3D view of the example. Drag to rotate; switch Zoom ON to use wheel or pinch zoom. Reset view restores the initial camera position.

A simple MATLAB program is available for download below.

MATLABFinite rotations in three dimensionsFour MATLAB files and READMEDownload ZIP ↓

07

References

  1. Rotation Formula, Wolfram MathWorld.
  2. Finite rotations, Math Wiki.
  3. Carlos Felippa, NFEM, Nonlinear Finite Element Methods (ASEN 5107), Appendix R.
  4. Enrico C. Da Lozzo, Geometrically exact three-dimensional beam theory: modeling and FEM implementation for statics and dynamics analysis, Istituto Universitario di Studi Superiori di Pavia, Master’s Degree in Earthquake Engineering, 2010.