void Matrix44::FromAxisAngle( const Vector3& axis, float angle ) { MakeZero(); //from ogre float radian = Angle_To_Radian(angle); float fCos = std::cos(radian); float fSin = std::sin(radian); float fOneMinusCos = 1.0f-fCos; float fX2 = axis.x*axis.x; float fY2 = axis.y*axis.y; float fZ2 = axis.z*axis.z; float fXYM = axis.x*axis.y*fOneMinusCos; float fXZM = axis.x*axis.z*fOneMinusCos; float fYZM = axis.y*axis.z*fOneMinusCos; float fXSin = axis.x*fSin; float fYSin = axis.y*fSin; float fZSin = axis.z*fSin; m_arr[0][0] = fX2*fOneMinusCos+fCos; m_arr[1][0] = fXYM-fZSin; m_arr[2][0] = fXZM+fYSin; m_arr[0][1] = fXYM+fZSin; m_arr[1][1] = fY2*fOneMinusCos+fCos; m_arr[2][1] = fYZM-fXSin; m_arr[0][2] = fXZM-fYSin; m_arr[1][2] = fYZM+fXSin; m_arr[2][2] = fZ2*fOneMinusCos+fCos; ClearTranslation(); }
LanguageTable::~LanguageTable() { ClearTranslation(); ClearBaseLanguage(); #ifdef TRACK_LANGUAGEPHRASE_ERRORS ClearLanguagePhraseErrors(); #endif m_languages.EmptyAndDelete(); if( m_lang ) delete m_lang; if( m_defaultLanguage ) delete [] m_defaultLanguage; }