[Math] Finding the rigid body transformation – how many points are required

least squareslinear-transformations

Apologies for a perhaps very stupid question, but I've begun to confuse myself a little, I think.

If I have two sets of 3D points which are related by a transformation matrix, how many corresponding 3D points would I require to be able to calculate that transformation matrix?

What I'm thinking: The transformation matrix consists of a rotation matrix $\mathbb R^{3×3}$ and a translation matrix $\mathbb R^{3×1}$. That makes 12 unknowns. Wouldn't that then mean I need at least four 3D points to determine the transformation matrix? And any additional points would make it an overdetermined least squares problem that would then increase the accuracy of the transformation.

And a follow up question: To make the transformation simpler I can use homogeneous coordinates and a homogeneous transformation matrix where the bottom row of the transformation matrix would be [0 0 0 1] and the fourth row of the coordinates would be [1] – this enables me to simply multiply the transformation matrix with a point to get the transformed point. I would still only require a minimum of four 3D points to calculate the homogeneous transformation matrix, since I do not have any additional unknowns compared to before, correct?

Best Answer

A 3D rigid body has $6$ degrees of freedom:
- $3$ for translation ( the $3$ coordinates of displacement);
- $3$ for rotation ($3$ eulerian, or other convention, angles, or $2$ for the versor of the axis of rotation and one for the angle).

And that, either in cartesian and in homogeneous coordinates: in the latter, you can interpret a translation as a rotation around an axis at infinity.

To define the position of a rigid body, you shall define three corresponding points, for the earth for instance, the new N, S, and Everest's top.
But since the three points are on a rigid body, the constraints on their mutual distances translates into that only $6$ of the nine coordinates are "free".