- convert both to orthonormal bases (A,B above), ignoring the translation component for now.
- use the inverse == transpose trick to find the inverse of the first transform (AT), then apply (multiply by) the second transform(B)
- (...fudge the translation component (not shown)...)
The transpose is equal to the inverse only if it's an orthonormal matrix - to project vector line onto another, it's a simple dot product. What's more each axis in an orthogonal frame is independent, so that's all we need - 9 dot products, or one matrix multiplication.

Sounds neat!
ReplyDeleteAny chance of a worked example to make things crystaline?
Say you have the standard frame - x,y,z
ReplyDelete(1,0,0)(0,1,0)(0,0,1)
Then to convert a point into the standard frame, from the standard frame, multiply by:
1000 T
0100
0010
0001
=
1000
0100
0010
0001
:P