记录一下:
m_pCamera->SetLookAt( vector3( 0, 0, 0 ), vector3( 0, 1, 0 ) );
inline void SetLookAt( const vector3 &i_vPosition, const vector3 i_vUp )
{
matrix44 matTemp;
matMatrix44LookAtLH( matTemp, m_vPosition, i_vPosition, i_vUp );
// Matrix -> Quaternion
qQuaternionRotationMatrix( m_qOrientation, matTemp );
}
在SetrLookAt 函数里面有 qQuaternionRotationMatrix 函数,
// Matrix -> Quaternion
quaternion &qQuaternionRotationMatrix( quaternion &o_qQuatOut, const matrix44 &i_matMatrix )
{
// http://www.gamasutra.com/features/19980703/quaternions_01.htm
//TODO
const float32 fDiagonal = i_matMatrix._11 + i_matMatrix._22 + i_matMatrix._33;
if( fDiagonal > 0.0f )
{
float32 s = sqrtf( fDiagonal + 1.0f );
o_qQuatOut.w = s / 2.0f;
s &