OpenGl自定义轮换问题

时间:2013-11-14 11:37:46

标签: c++ opengl

我正在尝试在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轴旋转,但度数似乎不对应。

有谁知道为什么?

2 个答案:

答案 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);
}