コード例 #1
0
ファイル: matrix4x4.cpp プロジェクト: rmuenste/FullC0ntact
bool CMatrix4x4<T>::GetInverseMatrix(CMatrix4x4 &matInverse) const
{

	T nDeterminate = Determinate();

	int i, j, sign;

	if(fabs(nDeterminate) < 0.0005)
	{
		return false;
	}

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

			sign = 1 - ((i+j)%2) * 2;

			Matrix3x3<T> matSub = GetSubMatrix3x3(i,j);

			T det = matSub.Determinate();

			matInverse.m_Entries[i+j*4] = (det * sign)/nDeterminate;

		}//end for
	}//end for

	return true;
}//end GetInverseMatrix
コード例 #2
0
ファイル: matrix4x4.cpp プロジェクト: rmuenste/FullC0ntact
T CMatrix4x4<T>::Determinate() const
{
	
	T det, res = 0;
	T i = 1;
	for(int n = 0; n < 4; n++, i*=-1)
	{
		Matrix3x3<T> mat = GetSubMatrix3x3(0,n);

		det = mat.Determinate();

		res+=m_Entries[n] * i * det;

	}//end for

	return res;

}//end Determinate