AC3D Forums Determining roll, pitch, and yaw from a normalized vector
 User Name Remember Me? Password
 Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

 Thread Tools Display Modes
 17th May 2005, 12:34 AM #1 briandavis Junior Member Member   Join Date: Jul 2004 Posts: 10 Determining roll, pitch, and yaw from a normalized vector Hi, As an exercise, I am taking the yaw and pitch angles of my simple simulator and determining the 3D vector that those angles would create. I am then wanting to take that vector and reverse the process to verify the yaw and pitch angles. I've supplied my test code below, and as is indicated by the output, you can see that neither attempt at retrieving the original pitch and yaw were successful. In my world, X goes into the screen and Z is up. Any help would be greatly appreciated! Incidentally, I am planning to use this concept to 'walk' through a scene while looking at a particular point in 3d space. Code: ```#include "math.h" #include "stdio.h" float PI = 3.141592654f; float Rad2Deg = 180 / PI; float Deg2Rad = PI / 180; int main(int argc, char* argv[]) { float pitch = 10.0; float yaw = 98.0; pitch *= Deg2Rad; yaw *= Deg2Rad; float x, y, z; x = (float)(cos(pitch) * cos(yaw)); y = (float)sin(yaw); z = (float)(sin(pitch) * cos(yaw)); float len = (float)sqrt(x * x + y * y + z * z); float verify_pitch = (float)atan2(z, len); float verify_yaw = (float)atan2(y, x); printf(" verify_pitch = %0.5f , pitch = %0.5f\n", verify_pitch, pitch); printf(" verify_yaw = %0.5f , yaw = %0.5f\n", verify_yaw, yaw); scanf("done...\n"); // yields the following output // verify_pitch = -0.02416 , pitch = 0.17453 // verify_yaw = 1.70833 , yaw = 1.71042 return 0; }``` Thanks for any insights into this problem.