弧度或度数?

时间:2014-02-27 12:41:30

标签: c++ opengl math

当我从欧拉角创建旋转矩阵时,我应该将度(欧拉角)转换为弧度,然后计算OpenGL的旋转矩阵吗? 但是我应该怎么做四元数呢? 我应该这样做:

void setQuaternionsFromEuler(float bank, float heading, float attitude)
{
   float DegreeToRadian = 3.14f/180.0f;
   double c1 = cos(heading/2*DegreeToRadian);
   double c2 = cos(attitude/2*DegreeToRadian);
   //...
   double s3 = sin(bank/2*DegreeToRadian);

   this.w = c1*c2*c3 - s1*s2*s3;
   //...
}

void setMatrixFromEuler(float x, float y, float z)
{
   float DegreeToRadian = 3.14f/180.0f;
   x *= DegreeToRadian;
   y *= DegreeToRadian;

   //...
}

或不?

2 个答案:

答案 0 :(得分:2)

这取决于您如何定义输入。

C ++的trig函数专门使用radian,所以你需要最终转换为radian,但这可以在数据进入你的程序之前完成(这样资源中的角度值都是弧度)

答案 1 :(得分:2)

旋转矩阵不再具有角度,因此它与OpenGL没有实际关系,但是您在C或C ++中使用标准库时使用的三角函数是以弧度定义的,因此如果面向用户的API使用度数,那么是的,你应该转换为cos / sin。