2012-10-05 46 views
1

我的數學錯了嗎?用戶應該能夠以度數輸入角度,並分別旋轉矩陣。相反,它縮小了對象,將其翻轉......調用旋轉矩陣收縮對象?

glmxRotate(&modelview, 0.0f, 0.0f, 1.0f, 90.0f); 

(與模型視圖是單位矩陣)產量:

常規:http://i.imgur.com/eX7Td.png

旋轉的:http://i.imgur.com/YnMEn.png

這裏的glmxRotate :

glmxvoid glmxRotate(glmxMatrix* matrix, glmxfloat x, glmxfloat y, glmxfloat z, 
    glmxfloat angle) 
{ 
    if(matrix -> mx_size != 4){GLMX_ERROR = GLMX_NOT_4X4; return;} 

    //convert to rads 
    angle *= 180.0f/3.14159; 

    const glmxfloat len = sqrtf((x * x) + (y * y) + (z * z)), 
        c = cosf(angle), 
        c1 = 1.0f - c, 
        s = sinf(angle); 

    //normalize vector 
    x /= len; 
    y /= len; 
    z /= len; 

    glmxfloat rot_mx[] = {x * x * c1 + c, 
          x * y * c1 + z * s, 
          x * z * c1 - y * s, 
          0.0f, 

          x * y * c1 - z * s, 
          y * y * c1 + c, 
          y * z * c1 + x * s, 
          0.0f, 

          x * z * c1 + y * s, 
          y * z * c1 - x * s, 
          z * z * c1 + c, 
          0.0f, 

          0.0f, 
          0.0f, 
          0.0f, 
          1.0f,}; 

    _glmxMultiMatrixArray(matrix, rot_mx, 4); 
} 

Al所以,如果翻譯矩陣是用最後四列中的翻譯定義的,那麼如何去翻譯單位矩陣,因爲結果總是會產生0?

回答

1

你的矩陣看起來對我來說是正確的,但是你是否知道你對rads乘法的角度實際上是角度乘法的弧度?

//convert to rads 
angle *= 180.0f/3.14159; 

應該是Pi/180.f

+0

這是問題,謝謝。 – Shokwav