Make your own free website on Tripod.com

typedef float[4][4] Matrix4x4; // กำหนดรูปแบบ matrix ขนาด 4 คูณ 4

Matrix4x4 gMatrix;

void SetIdentity( Matrix4x4 matrix )

{

matrix[0][0] = 1.0; matrix[0][1] = 0.0; matrix[0][2] = 0.0; matrix[0][3] = 0.0;

matrix[1][0] = 0.0; matrix[1][1] = 1.0; matrix[1][2] = 0.0; matrix[1][3] = 0.0;

matrix[2][0] = 0.0; matrix[2][1] = 0.0; matrix[2][2] = 1.0; matrix[2][3] = 0.0;

matrix[3][0] = 0.0; matrix[3][1] = 0.0; matrix[3][2] = 0.0; matrix[3][3] = 1.0;

}

void CopyMatrix( Matrix4x4 A, Matrix4x4 B )

{

int i, j;

for( i=0; i<4; i++ )

for( j=0; j<4; j++ )

C[i][j] = A[i][j];

}

. . . . . .จากสูตรข้างบนเป็นการสร้าง Identity matrix จะเห็นว่ามีการกำหนดให้ค่าใน matrix บางตัวมีค่า 1.0 ที่เหลือมีค่า 0.0 ตรงนี้เป็นการเริ่มต้นการทำงานของ matrix ครับ เพราะยังต้องผ่านกระบวนการอื่นๆ อีกต่อไป แต่มันก็ไม่ได้มีอะไรมากมาย แค่นำ matrix สองตัวมาคูณกันแค่นั้นเองครับ ส่วน function CopyMatrix ก็นำค่าจาก matrix A ไปให้ matrix C ครับ ไม่มีอะไรมากมาย และ ตัวแปรโกลบอล gMatrix เป็นตัวแปรใช้งานทั่วไปครับ มาดูต่อไป.......
void MulMatrix( Matrix4x4 A, Matrix4x4 B, Matrix4x4 C )

{

for( int i=0; i<4; i++ )

for( j=0; j<4; j++ )

C[i][j] = (A[i][0] * B[0][j]) + (A[i][0] * B[0][j]) + (A[i][1] * B[1][j]) + (A[i][2] * B[2][j]);

}

. . . . . .ข้างบนนี้เป็น function การคูณ matrix A และ matrix B ผลลัพท์จะอยู่ที่ matrix C ครับ ลองดูการทำงาน ของมันนะครับ ไม่ได้สลับซับซ้อนอะไรเหมือนที่บอกไปตอนต้นๆครับ เขียนแบบนี้ละครับ