## TL;DR

• Always be aware that whether your transformation is intrinsic or extrinsic.
• Multiplication order of quaternions or transformation matrices is inverted between the two.

## Problem Definition

Let’s think of composite transformation $T_c$, which applies $T_1$ first, and then $T_2$.

• $T_1$: Rotate 90 deg around x-axis
• $T_2$: Rotate 180 deg around z-axis

Which is correct, $T_c = T_1 T_2$ or $T_c = T_2 T_1$ ?
Actually both can be true, we are missing something to identify $T_c$.

## Extrinsic case

In extrinsic transformation, both $T_1$ and $T_2$ are described on the original coordinate.
Sometimes the original coordinate can be called world coordinate or fixed coordinate.

For example, let’s transform $P = (0, 0, 1)$ on the fixed frame. As you see, result should be $(0, 1, 0)$.

## Intrinsic case

In intrinsic case, the transformation is not about point, but coordinate.
New coordinate emerges by $T_1$, and $T_2$ is described on the new one. What’s important is $T_2$ is not about original z-axis, but new z’-axis.
With equation $P_{new} = T_c P$, where $P = (0, 0, 1)$, $P_{new} = (0, -1, 0)$,
because $(0,0,1)$ on x-y-z frame is $(0, -1, 0)$ on x’’-y’’-z’’ frame.

## Multiplication Order

• Extrinsic case: $T_c = T_2 T_1$
• Intrinsic case: $T_c = T_1 T_2$

Let’s check by C++ code.