示例#1
0
float det3x3sub(const float *m, int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
{
	float det = 0.0f;

	det += m[i0] * det2x2sub(m, i4, i5, i7, i8);
	det -= m[i3] * det2x2sub(m, i1, i2, i7, i8);
	det += m[i6] * det2x2sub(m, i1, i2, i4, i5);

	return det;
}
示例#2
0
文件: glmath.cpp 项目: skdeng/aquila
double det3x3sub(const double *m, int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
{
	double det = 0.0;

	det += m[i0] * det2x2sub(m, i4, i5, i7, i8);
	det -= m[i3] * det2x2sub(m, i1, i2, i7, i8);
	det += m[i6] * det2x2sub(m, i1, i2, i4, i5);

	return det;
}
示例#3
0
mat3x3 inverse(const mat3x3 &Matrix)
{
	const float *m = Matrix.M;

	float det = 0.0f;

	det += m[0] * det2x2sub(m, 4, 5, 7, 8);
	det -= m[3] * det2x2sub(m, 1, 2, 7, 8);
	det += m[6] * det2x2sub(m, 1, 2, 4, 5);

	mat3x3 Inverse;

	Inverse.M[0] = det2x2sub(m, 4, 5, 7, 8) / det;
	Inverse.M[1] = -det2x2sub(m, 1, 2, 7, 8) / det;
	Inverse.M[2] = det2x2sub(m, 1, 2, 4, 5) / det;
	Inverse.M[3] = -det2x2sub(m, 3, 5, 6, 8) / det;
	Inverse.M[4] = det2x2sub(m, 0, 2, 6, 8) / det;
	Inverse.M[5] = -det2x2sub(m, 0, 2, 3, 5) / det;
	Inverse.M[6] = det2x2sub(m, 3, 4, 6, 7) / det;
	Inverse.M[7] = -det2x2sub(m, 0, 1, 6, 7) / det;
	Inverse.M[8] = det2x2sub(m, 0, 1, 3, 4) / det;

	return Inverse;
}