【问题标题】:OpenGl custom rotation issueOpenGL自定义旋转问题
【发布时间】:2013-11-14 11:37:45
【问题描述】:

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

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

有人知道为什么吗?

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    在计算正弦和余弦时使用radians 而不是angle

    【讨论】:

      【解决方案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-28
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多