Make your own free website on Tripod.com

void TranslateMatrix( Matrix4x4 matrix, float tx, float ty, float tz )

{

Matrix4x4 tmat;
tmat[0][0] = 1; tmat[0][1] = 0; tmat[0][2] = 0; tmat[0][3] = 0;
tmat[1][0] = 0; tmat[1][1] = 1; tmat[1][2] = 0; tmat[1][3] = 0;
tmat[2][0] = 0; tmat[2][1] = 0; tmat[2][2] = 1; tmat[2][3] = 0;
tmat[3][0] = tx; tmat[3][1] = ty; tmat[3][2] = tz; tmat[3][3] = 1;

MulMatrix( matrix, tmat, gMatrix );
CopyMatrix( gMatrix, matrix );

}

. . . . . .นี่ก็คือ function ส่งค่า matrix ก็ดูตำแหน่งของ tx, ty, และ tz ให้ดีนะครับ ว่าอยู่ตำแหน่งไหน ทีนี้เราก็ได้ค่า matrix ที่ผ่านกระบวนการ Scale, Rotate และ Translate ต่อไปเราก็นำ Vector มาคูณสิทีนี้
void VectorMulMatrix( Vector *A, Matrix4x4 matrix, Vector *C )

{

C -> x = (A -> x * matrix[0][0]) +
(A -> y * matrix[1][0]) +
(A -> z * matrix[2][0]) +
matrix[3][0];

C -> y = (A -> x * matrix[0][1]) +
(A -> y * matrix[1][1]) +
(A -> z * matrix[2][1]) +
matrix[3][1];

C -> z = (A -> x * matrix[0][2]) +
(A -> y * matrix[1][2]) +
(A -> z * matrix[2][2]) +
matrix[3][2];

}

. . . . . .จริงๆอยากให้มันจัดเป็นระเบียบเรียบร้อยสวยงาม แต่ HTML มันกระจอกจริงๆ เลยดูบูดๆ เบี้ยวๆ ไปบ้าง แต่คิดว่า คงเข้าใจจาก function ที่ผมยกมาเป็นตัวอย่างนะครับ ถ้ายังงงก็กลับไปอ่านอีกรอบนะครับ ค่อยๆซึมซาบ ใจเย็นๆ ไม่เข้าใจไม่เป็นไร ขอให้รู้ผ่านๆไว้ก่อนว่า ต้องทำอะไรบ้างครับ