2012-10-05 3 views
1

수학 문제가 잘못 되었습니까? 사용자는 각도를도 단위로 입력 할 수 있어야하고 매트릭스를 각각 회전시킵니다.회전 매트릭스는 물체를 축소합니까?

일반 : http://i.imgur.com/eX7Td.png

회전 : http://i.imgur.com/YnMEn.png

여기 glmxRotate의 대신 (단위 행렬 인 모델 뷰와) 수율을

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

를 호출 ... 객체를 축소하고 방방 뜬다 :

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

너의 행렬에 대한 각이 실제로 각 곱셈에 대한 라디안이라는 것을 알고 있긴하지만 너의 행렬이 나에게 맞아 보이는가?

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

Pi/180.f이어야합니다.

+0

문제였습니다. 고맙습니다. – Shokwav

관련 문제