# How do you transform a vector to use another objects orientation?

I want to take a vector that is using world coordinates and position it using the orientation of an object. So, if the direction of the object is the z-axis, and the vector is (0,0,1), then the orientated vector would point in the direction of the object. I want to vector to remain in the world coordinate system. All I have for the object is it's up and direction vector. So, I can build a matrix with those by crossing them to create the third axis. Multiplying the vector by this matrix transform the vector into the object coordinate system (right?). But, I want the vector in world coordinate system. Should I use the matrix to find euler angles and then use those angles to create a rotation matrix?

-
Multiplying the vector by the matrix should give you the vectors orientation in world space – CiscoIPPhone Dec 1 '10 at 14:38
When I did what CiscolPPhone suggested, it was the opposite transform. So, I took the inverse of the matrix and that worked. I'm not sure why though. – zooropa Dec 1 '10 at 16:16
@CiscoIPPhone, any reason that your comment wasn't an answer? That way zooropa here could mark it as accepted. – Tetrad Dec 1 '10 at 16:19
I'll add it as a answer. – CiscoIPPhone Dec 1 '10 at 17:07

In addition to what CiscolPPhone said, make sure that you are crossing properly. `Dir X Up != Up X Dir`. To get the third vector properly, you must first know the handedness of the co-ordinate system. Is it right handed, then it should be `Up X Dir` and for left handed it should be `Dir X Up`.