void inverse44(
double *inverse,
double *matrix
)
{
double trans[3], trans_xf[3];
MTX3_t matrix3;
inverse[0] = matrix[0];
inverse[1] = matrix[4];
inverse[2] = matrix[8];
inverse[4] = matrix[1];
inverse[5] = matrix[5];
inverse[6] = matrix[9];
inverse[8] = matrix[2];
inverse[9] = matrix[6];
inverse[10] = matrix[10];
inverse[15] = 1.0;
inverse[12] = inverse[13] = inverse[14] = 0.0;
trans[0] = matrix[3];
trans[1] = matrix[7];
trans[2] = matrix[11];
MTX4_mtx3(MTX4_cast_pc(matrix),&matrix3);
MTX3_vec_multiply_t(VEC3_cast_pc(trans),&matrix3,VEC3_cast(trans_xf));
inverse[3] = -trans_xf[0];
inverse[7] = -trans_xf[1];
inverse[11] = -trans_xf[2];
}
這是什麼功能呢?它是否真的逆轉換矩陣?
MTX3_t是3×3矩陣的定義。 MTX4_mtx3獲取子矩陣。 MTX3_vec_multiply_t乘以一個向量和一個矩陣。
你知道你可以自己檢查這個,對嗎? – Bart
沒有一些數學背景我不認爲它是非常很容易檢查這個,我的意思是你可以看到它是否適用於單個案例,或者甚至是很多,但這並不能證明這是一個有效的方法.. – jcoder