1

我正在尝试围绕 y axix 实现我的自定义 opengl Rotation。这是我的代码;

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

有谁知道为什么?

4

2 回答 2

3

计算正弦和余弦时radians不使用。angle

于 2013-11-14T11:47:58.650 回答
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);
}
于 2013-11-14T11:54:37.280 回答