Skip to main content
gamedev.net
🔒 Locked

Getting angles from vector

Started by BeRSeRKeR[DGT] 0 replies 600+ views
Original Post
BeRSeRKeR[DGT]
BeRSeRKeR[DGT]
Hi all...sorry for the previous post. I have defined a camera B-Spline path. I know the tangent vector is the velocity and the camera direction in some fraction time. Here is the question: How can I convert the tangent vector (normalized) to angles (pitch, yaw and roll)??. I tried with this but it doesn''t work correctly: void GetAnglesFromVector(D3DVECTOR *v, float *pitch, float *yaw, float *roll) { // pitch // first cuad. if(v->y > 0.0f && v->z > 0.0f) *pitch = acosf(v->z); // second cuad. if(v->y > 0.0f && v->z < 0.0f) *pitch = acosf(v->z); // third cuad. if(v->y < 0.0f && v->z < 0.0f) *pitch = acosf(v->z); // fourth cuad. if(v->y < 0.0f && v->z > 0.0f) *pitch = acosf(v->z); // yaw // first cuad. if(v->x > 0.0f && v->z > 0.0f) *yaw = acosf(v->x); // second cuad. if(v->x < 0.0f && v->z > 0.0f) *yaw = acosf(v->x); // third cuad. if(v->x < 0.0f && v->z < 0.0f) *yaw = acosf(v->x); // fourth cuad. if(v->x > 0.0f && v->z < 0.0f) *yaw = acosf(v->x); // roll // first cuad. if(v->x > 0.0f && v->y > 0.0f) *roll = acosf(v->x); // second cuad. if(v->x < 0.0f && v->y > 0.0f) *roll = acosf(v->x); // third cuad. if(v->x < 0.0f && v->y < 0.0f) *roll = acosf(v->x); // fourth cuad. if(v->x > 0.0f && v->y < 0.0f) *roll = acosf(v->x); } Do you know some better way to make this?? Download the demo here.
NoNseNse
NoNseNse
I have exactly the same problem. Just wanted to post here yesterday when I read your post. I have the three camera vectors (view, up and right) and need the x, y and z rotations. My approach was very similar and I fugured that there MUST exist a fomula for this, so one could do without all the ifs. So if you find any solution, please let me know!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.