posted 3 Nov 2023

Rigid Transformations


Rodrigues' Rotation

Derive the transformation representing the 3D rotation by an angle α\alpha about a line E3.\ell \in \mathbb{E}^3. Let \ell be defined by the point X0X_0 and direction u^.\hat{u}.

Given the normal n^,\hat{n}, any vector vv can be decomposed into parallel and perpendicular component vectors,

v=(vu^)u^+[v(vu^)u^].v = \left(v \cdot \hat{u}\right)\hat{u} + \left[v - \left(v \cdot \hat{u}\right)\hat{u}\right].

Under rotation, the parallel component remains unchanged while the perpendicular component is transformed.

The perpendicular component vv(vu^)u^v_\perp \triangleq v - \left(v \cdot \hat{u}\right)\hat{u} is orthogonal to u^\hat{u} and is coplanar with v.v. Let the vectors {u^,v,u^×v}\{\hat{u}, v_\perp, \hat{u} \times v\} serve as the basis for our 3D space, and perform the rotation in the plane given by Pspan{v,u^×v}.P \triangleq \mathrm{span}\{v_\perp, \hat{u} \times v\}.

The rotating vv_\perp in PP is given by v=cos(α)v+sin(α)u^×v.v'_\perp=\cos(\alpha)\,v_\perp + \sin(\alpha)\,\hat{u}\times{v}.

Then, the transformed vector is

v=(vu^)u^+cos(α)v+sin(α)[u^×v]=(vu^)u^+cos(α)[v(vu^)u^]+sin(α)[u^×v]=(u^u^)v+cos(α)[Iv(u^u^)v]+sin(α)[Uv]=v[cos(α)I+(1cos(α))[u^u^]+sin(α)U]\begin{align*} v' &= (v \cdot \hat{u})\hat{u} + \cos(\alpha)\,v_\perp + \sin(\alpha)\,[\hat{u}\times{v}]\\ &= (v \cdot \hat{u})\hat{u} + \cos(\alpha)[v - \left(v \cdot \hat{u}\right)\hat{u}] + \sin(\alpha)[\hat{u}\times{v}]\\ &= \left(\hat{u}\cdot\hat{u}^{\intercal}\right)v + \cos(\alpha)\left[\mathbf{I}v - \left(\hat{u}\cdot\hat{u}^{\intercal}\right)v\right] + \sin(\alpha)[\mathbf{U} \cdot v]\\ &= v\cdot\left[\cos(\alpha)\mathbf{I} + (1 - \cos(\alpha))\left[\hat{u}\cdot\hat{u}^{\intercal}\right] + \sin(\alpha)\,\mathbf{U}\right] \end{align*}

where I\mathbf{I} is the R3×3\mathbb{R}^{3 \times 3} identity matrix, and U\mathbf{U} is defined as the matrix in the cross-product matrix form,

u^×vUv=[0u3u2u30u1u2u10]v.\hat{u} \times v \triangleq \mathbf{U}\cdot v = \begin{bmatrix} 0 & - u_3 & u_2\\ u_3 & 0 & -u_1\\ -u_2 & u_1 & 0 \end{bmatrix}v.

Then, to rotate about \ell by α,\alpha, we subtract X0X_0 from vv, perform the rotation about u^,\hat{u}, then add back X0.X_0.

Householder Transform

Derive the transformation which represents the reflection about a plane HE3H \in \mathbb{E}^3 where HH is uniquely defined by the point CC and normal n^.\hat{n}.

Given the normal n^,\hat{n}, any vector vv can be decomposed into parallel and perpendicular component vectors,

v=(vn^)n^+[v(vn^)n^].v = \left(v \cdot \hat{n}\right)\,\hat{n} + \left[v - (v\cdot\hat{n})\,\hat{n}\right].

Suppose that CC is at the origin of our coordinate frame; then reflecting vv about HH negates the parallel component while the perpendicular component remains unchanged,

v=(vn^)n^+[v(vn^)n^]=v2(vn^)n^=v2(n^v)n^=v2n^n^v=(I2n^n^)v.\begin{align*} v' &= -\left(v \cdot \hat{n}\right)\,\hat{n} + \left[v - (v\cdot\hat{n})\,\hat{n}\right]\\ &= v - 2 \left(v \cdot \hat{n}\right)\hat{n}\\ &= v - 2 \left(\hat{n} \cdot v\right)\hat{n}\\ &= v - 2 \hat{n}\cdot\hat{n}^{\intercal} v\\ &= \left(\mathbf{I} - 2\hat{n}\cdot\hat{n}^{\intercal}\right)v. \end{align*}

In the general case for CO,C \neq \mathcal{O}, we simply have to subtract CC from vv in order to make it the origin of the local coordinate system, then proceed using the above method, and finally adding back CC to the reflected v.v'. This procedure yields the final Householder transformation,

M:[I2n^n^](vC)+C.\mathcal{M} : \left[\mathbf{I} - 2\hat{n}\cdot\hat{n}^{\intercal}\right] (v - C) + C.