기능 "matrixMultiply는()"를 참조 문서에서, 당신을 위해 행렬 곱셈을 수행하고 사용중인 특수 1 차원 매트릭스 형 mat4을 담당 : 2 차원 배열을 사용하여
void matrixMultiply(mat4 m1, mat4 m2, mat4 result)
{
// First Column
result[0] = m1[0]*m2[0] + m1[4]*m2[1] + m1[8]*m2[2] + m1[12]*m2[3];
result[1] = m1[1]*m2[0] + m1[5]*m2[1] + m1[9]*m2[2] + m1[13]*m2[3];
result[2] = m1[2]*m2[0] + m1[6]*m2[1] + m1[10]*m2[2] + m1[14]*m2[3];
result[3] = m1[3]*m2[0] + m1[7]*m2[1] + m1[11]*m2[2] + m1[15]*m2[3];
// Second Column
result[4] = m1[0]*m2[4] + m1[4]*m2[5] + m1[8]*m2[6] + m1[12]*m2[7];
result[5] = m1[1]*m2[4] + m1[5]*m2[5] + m1[9]*m2[6] + m1[13]*m2[7];
result[6] = m1[2]*m2[4] + m1[6]*m2[5] + m1[10]*m2[6] + m1[14]*m2[7];
result[7] = m1[3]*m2[4] + m1[7]*m2[5] + m1[11]*m2[6] + m1[15]*m2[7];
// Third Column
result[8] = m1[0]*m2[8] + m1[4]*m2[9] + m1[8]*m2[10] + m1[12]*m2[11];
result[9] = m1[1]*m2[8] + m1[5]*m2[9] + m1[9]*m2[10] + m1[13]*m2[11];
result[10] = m1[2]*m2[8] + m1[6]*m2[9] + m1[10]*m2[10] + m1[14]*m2[11];
result[11] = m1[3]*m2[8] + m1[7]*m2[9] + m1[11]*m2[10] + m1[15]*m2[11];
// Fourth Column
result[12] = m1[0]*m2[12] + m1[4]*m2[13] + m1[8]*m2[14] + m1[12]*m2[15];
result[13] = m1[1]*m2[12] + m1[5]*m2[13] + m1[9]*m2[14] + m1[13]*m2[15];
result[14] = m1[2]*m2[12] + m1[6]*m2[13] + m1[10]*m2[14] + m1[14]*m2[15];
result[15] = m1[3]*m2[12] + m1[7]*m2[13] + m1[11]*m2[14] + m1[15]*m2[15];
}
행렬 곱셈을 수행 할 수 있습니다 세 개의 중첩 된 for-loops에서. mat4 유형에 대한 비슷한 해결책이 연습 문제로 남아 있습니다. 승인?
제공하신 링크가 작동하지 않습니다. – Femaref
캐시 된 버전을 열 수 있습니까? http://webcache.googleusercontent.com/search?q=cache:db-in.com/blog/2011/04/cameras-on-opengl-es-2-x/ – steave
나도 건너오고 싶지 않아. 무딘, 그러나 : 당신은 기본적인 선형 대수학의 단단한 이해, 즉 벡터와 행렬로 작업하는 방법없이 3D 프로그래밍을 고집해서는 안됩니다. 선형 대수학에 대한 일부 학부 수학 교과서는 컴퓨터 그래픽 수학 입문서뿐만 아니라 읽는 목록에 있어야합니다. – datenwolf