【发布时间】:2014-02-27 20:50:04
【问题描述】:
当我从欧拉角创建旋转矩阵时,我应该将度数(欧拉角)转换为弧度,然后计算 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;
//...
}
还是不行?
【问题讨论】:
-
请为 π (M_PI) 使用更准确的值,否则通常会导致对象恢复到其原始位置的连续旋转不会这样做!
-
既然可以有双打,为什么还要使用浮点数? 16位有效数字不是比7位好吗?
-
@duffymo opengl 并不总是接受双打,浮点数是有保证的