- 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 (A
^{T}), 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