Beispiel #1
0
	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;
}