int main(int argc, char **argv) { Matrix mat1, mat2, mat3, mat4; mat1.Create(3, 5); mat2.Create(5, 3); mat3.Create(4, 4); mat4.Create(4, 4); for(unsigned int i = 0; i < mat2.Rows(); i++) for(unsigned int j = 0; j < mat2.Cols(); j++) mat2[i][j] = (i + j); for(unsigned int i = 0; i < mat1.Rows(); i++) for(unsigned int j = 0; j < mat1.Cols(); j++) mat1(i, j) = (i + j); mat3[0][0] = 3; mat3[0][1] = 2; mat3[0][2] = 0; mat3[0][3] = 1; mat3[1][0] = 4; mat3[1][1] = 0; mat3[1][2] = 1; mat3[1][3] = 2; mat3[2][0] = 3; mat3[2][1] = 0; mat3[2][2] = 2; mat3[2][3] = 1; mat3[3][0] = 9; mat3[3][1] = 2; mat3[3][2] = 3; mat3[3][3] = 1; mat1.Print(); //mat1.Transpose().Print(); mat2.Print(); mat3.Print(); cout << "M1 * M2 = \n"; mat1 *= mat2; mat1.Print(); double d; mat3.GetDeterminant(d); cout << "Det of M3 = " << d << "\n"; mat4[0][0] = 1; mat4[0][1] = 0; mat4[0][2] = 0; mat4[0][3] = 0; mat4[1][0] = 0; mat4[1][1] = 1; mat4[1][2] = 0; mat4[1][3] = 0; mat4[2][0] = 0; mat4[2][1] = 0; mat4[2][2] = 1; mat4[2][3] = 0; mat4[3][0] = 0; mat4[3][1] = 0; mat4[3][2] = 0; mat4[3][3] = 1; Matrix imat3; Matrix::GaussJordan(mat3, mat4, imat3); cout << "Matrix A:\n"; mat3.Print(); cout << "Inverse of Matrix A:\n"; imat3.Print(); cout << "A*A^-1\n"; (mat3*imat3).Print(); cout << "Checking inverse\n"; Matrix iden = mat3.Inverse()*mat3; iden.Print(); Vector3D vector; Quaternion q; vector.mX = 1; double theta, pitch; theta = -30; pitch = -20; q.CreateFromEuler(theta, pitch, theta, true); vector = q.Rotate(vector); vector.Print(); Quaternion a1, a2; a1.CreateFromEuler(0, 0, 30, true); a2.CreateFromEuler(0, 0, 90, true); a1 = a1 - a2; a1.Print(true, true); return 0; }