我正在尝试在y axix周围实现我的自定义opengl旋转。这是我的代码;
void mglRotateY(float angle)
{
float radians = angle * (PI/180);
GLfloat t[4][4] =
{
{cosf(angle), 0, -sinf(angle),0},
{0, 1, 0, 0},
{sinf(angle), 0, cosf(angle), 0},
{0, 0, 0, 1}
}; //Rotation matrix y
glMultMatrixf(*t);
}
效果是绕y轴旋转,但度数似乎不对应。
有谁知道为什么?
答案 0 :(得分:3)
在计算正弦和余弦时使用radians
而非angle
。
答案 1 :(得分:2)
在你的代码中你引用的是角度而不是弧度。此外,您可能希望预先计算值,因为您有4个计算来填充矩阵t
或许类似
void mglRotateY(float angle)
{
float radians = angle * (PI/180);
float cosVal = cosf(radians);
float sinVal = sinf(radians);
GLfloat t[4][4] =
{
{cosVal, 0, -sinVal,0},
{0, 1, 0, 0},
{sinVal, 0, cosVal, 0},
{0, 0, 0, 1}
}; //Rotation matrix y
glMultMatrixf(*t);
}