2012-05-01 2 views
0

내가 오해하고 있는지, 아니면 단순히 피곤할 지 확실하지 않습니다. 아래 두 줄의 코드를 고려하십시오.GLKMatrix4Translate가 맞습니까?

GLKMatrix4 projection = GLKMatrix4Translate(_perspective, 0, 0, -5); 
GLKMatrix4 projection = GLKMatrix4Multiply(_perspective, GLKMatrix4MakeTranslation(0, 0, -5));  

나는 그 (것)들이 동등 할 것을 예상했다. 그러나 그들은 그렇지 않습니다. GLKMatrix4Translate의 소스는 다음과 같습니다

static __inline__ GLKMatrix4 GLKMatrix4Translate(GLKMatrix4 matrix, float tx, float ty, float tz) 
{ 
    GLKMatrix4 m = { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3], 
        matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7], 
        matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11], 
        matrix.m[0] * tx + matrix.m[4] * ty + matrix.m[8] * tz + matrix.m[12], 
        matrix.m[1] * tx + matrix.m[5] * ty + matrix.m[9] * tz + matrix.m[13], 
        matrix.m[2] * tx + matrix.m[6] * ty + matrix.m[10] * tz + matrix.m[14], 
        matrix.m[15] }; 
    return m; 
} 

그러나 내가 할 마지막 줄을 예상 :

matrix.m[3] * tx + matrix.m[7] * ty + matrix.m[11] * tz + m[15]; 

내가 해결 오전 또는 피곤 안개에?

+0

피곤한 안개 : http://en.wikipedia.org/wiki/Translation_%28geometry%29#Matrix_representation – stark

답변

0

당신 말이 맞아요, 번역에 버그가 있어야합니다. m [15]는 항상 변경되지 않기 때문에 Translate 함수 대신 MakeTranslation + Multiply를 사용합니다.