48 lines
1.9 KiB
C++
48 lines
1.9 KiB
C++
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// OpenGL Mathematics Copyright (c) 2005 - 2008 G-Truc Creation (www.g-truc.net)
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Created : 2005-12-21
|
|
// Updated : 2005-12-21
|
|
// Licence : This source is under GNU LGPL licence
|
|
// File : glm/gtx/determinant.inl
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
namespace glm
|
|
{
|
|
template <typename T>
|
|
inline T determinantGTX(const detail::_xmat2<T>& m)
|
|
{
|
|
return m[0][0] * m[1][1] - m[1][0] * m[0][1];
|
|
}
|
|
|
|
template <typename T>
|
|
inline T determinantGTX(const detail::_xmat3<T>& m)
|
|
{
|
|
return m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])
|
|
- m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])
|
|
+ m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
|
|
}
|
|
|
|
template <typename T>
|
|
inline T determinantGTX(const detail::_xmat4<T>& m)
|
|
{
|
|
T SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
|
|
T SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
|
|
T SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
|
|
T SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
|
|
T SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
|
|
T SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
|
|
|
|
detail::_xvec4<T> DetCof(
|
|
+ (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02),
|
|
- (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04),
|
|
+ (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05),
|
|
- (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05));
|
|
|
|
return m[0][0] * DetCof[0]
|
|
+ m[0][1] * DetCof[1]
|
|
+ m[0][2] * DetCof[2]
|
|
+ m[0][3] * DetCof[3];
|
|
}
|
|
}
|