How can I calculate rotation angles from a 3D vector without a rotation matrix?

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 32K views
112358
Messages
1
Reaction score
0
Hello folks!

So, I'm working on a java applet where I want to rotate an object to point in the direction that it is moving. I have its velocity stored as a 3D vector (x,y,z) and I am using a 3D library that allows for rotation on any axis (x,y, or z).

It's my understanding that I need to calculate the Euler angles for rotation along all 3 axes. I've found a lot of help online for calculating Euler angles from a rotation matrix. My issue is that I don't have a rotation matrix, i just have the velocity vector of the object. Can anyone help me understand how to calculate rotation angles from a 3D vector? Do I need to first calculate a rotation matrix and then calculate Euler angles?

My pseudo-code for what I am attempting is as follows:

angle1 = getXRotation(velocity);
angle2 = getYRotation(velocity);
angle3 = getZRotation(velocity);

translate(location)
rotateX(angle1)
rotateY(angle2)
rotateZ(angle3)
draw object!

Thanks all!
 
Mathematics news on Phys.org
Try to search quaternion, SU(3), unit complex number, etc. Quaternion may help you to simplify a lot of calculation.