Is it possible to do rotation-translation using 3-element vectors and $3\times3$ matrices?

57 Views Asked by At

Suppose, I have a candidate vector $v(v_x, v_y, v_z)$.

I want to rotate it $\theta$ degrees about an arbitrary axis that starts at vector $s(s_x,s_y,s_z)$ and ends at vector $e(e_x, e_y, e_z)$ when the origin of the axes is located at $o(o_x, o_y, o_z)$.

This link shows that it is done using 4-element augmented vectors and $4\times4$ augmented matrices.

Is it possible to do it using 3-element vectors and $3\times3$ matrices?

1

There are 1 best solutions below

1
On

Yes, it’s possible. The trickery with 4D vectors and $4 \times 4$ matrices is just to make it easier to combine several transformations by matrix multiplication.

The steps are:

  1. Translate everything so that your line start-point becomes the origin. You do this by subtracting the coordinates of the start point from all points.
  2. Rotate by the angle $\theta$ around your axis line (which now passes through the origin). To do this, you can use the $3 \times 3$ matrix derived from Rodrigues’ formula.
  3. Translate back again by adding the coordinates of the line start point.

When all is done, you’ll end up with a formula of the form $$ \mathbf{v}_{\text{new}} = \mathbf{M} \mathbf{v}_{\text{old}} + \mathbf{b} $$ where $\mathbf{M}$ is a $3 \times 3$ matrix and $\mathbf{b}$ is a 3D vector.