Following up on this question, I understand that a change of basis transformation is always invertible. What is the geometric interpretation of the inverse of a change of basis transform?
EDIT:
I came across the following implementation of a plane to plane orientation. When I played around the with the result, I can see that the matrix generated is the inverse of the change of basis transform. I'm trying to understand the link between the two. Summary of the following code is
Move the source frame to the origin (0, 0, 0). Then rotate the x-axis of the source frame to the x-axis of the target frame. Then rotate the y-axis of the source frame using the same rotation as the previous rotation (it's not clear to me why - I guess this means the XY plane is rotated to align with the target XY plane), then rotate the y-axis resultant from the previous rotation to the target y-axis. Then move the source frame to the target frame.
I'm trying to understand the link (reason) why/if this is related to the inverse of the change of basis for the same source and target frame.
/**
* Create a transformation that orients plane0 to plane1. If you want to orient objects from one plane to another, use this form of transformation.
* @param fromPlane The plane to orient from.
* @param toPlane the plane to orient to.
* @returns A transformation matrix which orients from fromPlane to toPlane
*/
public static PlaneToPlane(fromPlane: Plane, toPlane: Plane) {
// move fromPlane to world origin
const translation1 = Transform.Translation(Vector3d.Zero.Subtract(fromPlane.Origin));
const rotationX = Transform.VectorToVector(fromPlane.XAxis, toPlane.XAxis);
const tranformedFromPlaneYAxis = fromPlane.YAxis.Transform(rotationX);
const rotationY = Transform.VectorToVector(tranformedFromPlaneYAxis, toPlane.YAxis);
// move from world origin to toPlane
const translation2 = Transform.Translation(toPlane.Origin);
return Transform.CombineTransforms([translation1, rotationX, rotationY, translation2]);
}