I need to calculate the 3 Euler angles (yaw, pitch, roll) between 2 points.
The picture below shows the way I rotate. These are the angles I need to calculate. (The only difference is I'm rotating the object in the order X,Y,Z and not Z,Y,X)
This is the code I'm using but its not working for me:
// x, y, z represent a fractional value between -[1] and [1]// a "unit vector" of the point I need to rotate towardsyaw = Math.atan2( y, x )pitch = Math.atan2( z, Math.sqrt( x * x + y * y ) )
[Edited by - Jenko on October 22, 2010 10:04:08 PM]
I have also been doing a lot a research on the internet about that topic. I'm currently looking for a way to do this with QUATERNIONS and I decided to post that here instead of starting a new thread since it's basicaly the same question but with another system.
It's weird because this is almost working, if I rotate on vector on a specific axis in relation to my other vector, the resulting vector seems to rotate correctly but all other axis won't work ! It gives awkward results. But if I move my two vectors as if they were stick one to the other, the resulting vector will react as if it was stick to my 2 vectors. So I think I'm not doing something correct here but I just don't know what.
And finally, here's the same thing with euler angles. I got it to work but I wanted a more optimized method.
// Calculate Euler rotation angles between 2 vectors .. we use Rodrigues formula
vector $V1 = << my first vector >>; vector $V2 = << my second vector >>;
In conclusion, my quaternion method is still not working but seems more promising than my other method which is working but might be slow. I'm looking for a better solution.
Do I assume correctly that the resultant vector stores the X and Y euler rotations into the vector's x and y properties?
However since I'm not programming this in C++ nor do I have your vector library, I'm having some trouble understanding what you've done here:
$R = $eye3 + sin($angle)*$axis_skewed + ([[1]]-cos($angle))*$axis_skewed*$axis_skewed;// do you add all the properties of the eye3 matrix?// do you multiply with all the properties of the axis_skewed matrix?// etc..// and what is R? a vector or matrix? or number?
and here:
$result = ($R * $vectorMatr);// do you multiply the vector with the matrix to get the resultant vector using standard matrix multiplying?
If you could post your matrix/vector library I could use its code since my platform does not compute operators (* / + -) and call functions behind the scenes.