Esempio n. 1
0
CMatrix4x4 CMatrix4x4::operator *(CMatrix4x4 &m)
{
   return CMatrix4x4(matrix[0] * m.matrix[0] + matrix[4] * m.matrix[1] + matrix[8] *
                     m.matrix[2] + matrix[12] * m.matrix[3],
						   matrix[1] * m.matrix[0] + matrix[5] * m.matrix[1] + matrix[9] *
                     m.matrix[2] + matrix[13] * m.matrix[3],
						   matrix[2] * m.matrix[0] + matrix[6] * m.matrix[1] + matrix[10] *
                     m.matrix[2] + matrix[14] * m.matrix[3],
						   matrix[3] * m.matrix[0] + matrix[7] * m.matrix[1] + matrix[11] *
                     m.matrix[2] + matrix[15] * m.matrix[3],
						   matrix[0] * m.matrix[4] + matrix[4] * m.matrix[5] + matrix[8] *
                     m.matrix[6] + matrix[12] * m.matrix[7],
						   matrix[1] * m.matrix[4] + matrix[5] * m.matrix[5] + matrix[9] *
                     m.matrix[6] + matrix[13] * m.matrix[7],
						   matrix[2] * m.matrix[4] + matrix[6] * m.matrix[5] + matrix[10] *
                     m.matrix[6] + matrix[14] * m.matrix[7],
						   matrix[3] * m.matrix[4] + matrix[7] * m.matrix[5] + matrix[11] *
                     m.matrix[6] + matrix[15] * m.matrix[7],
						   matrix[0] * m.matrix[8] + matrix[4] * m.matrix[9] + matrix[8] *
                     m.matrix[10] + matrix[12] * m.matrix[11],
						   matrix[1] * m.matrix[8] + matrix[5] * m.matrix[9] + matrix[9] *
                     m.matrix[10] + matrix[13] * m.matrix[11],
						   matrix[2] * m.matrix[8] + matrix[6] * m.matrix[9] + matrix[10] *
                     m.matrix[10] + matrix[14] * m.matrix[11],
						   matrix[3] * m.matrix[8] + matrix[7] * m.matrix[9] + matrix[11] *
                     m.matrix[10] + matrix[15] * m.matrix[11],
						   matrix[0] * m.matrix[12] + matrix[4] * m.matrix[13] + matrix[8] *
                     m.matrix[14] + matrix[12] * m.matrix[15],
						   matrix[1] * m.matrix[12] + matrix[5] * m.matrix[13] + matrix[9] *
                     m.matrix[14] + matrix[13] * m.matrix[15],
						   matrix[2] * m.matrix[12] + matrix[6] * m.matrix[13] + matrix[10] *
                     m.matrix[14] + matrix[14] * m.matrix[15],
						   matrix[3] * m.matrix[12] + matrix[7] * m.matrix[13] + matrix[11] *
                     m.matrix[14] + matrix[15] * m.matrix[15]);
}
Esempio n. 2
0
CMatrix4x4 CMatrix4x4::operator *(float f)
{
   return CMatrix4x4(matrix[0]  * f, matrix[1]  * f, matrix[2]  * f, matrix[3]  * f,
                     matrix[4]  * f, matrix[5]  * f, matrix[6]  * f, matrix[7]  * f,
                     matrix[8]  * f, matrix[9]  * f, matrix[10] * f, matrix[11] * f,
                     matrix[12] * f, matrix[13] * f, matrix[14] * f, matrix[15] * f);
}
Esempio n. 3
0
CMatrix4x4 CMatrix4x4::operator+(CMatrix4x4 &m)
{
	return CMatrix4x4(matrix[0]  + m.matrix[0], matrix[1]   + m.matrix[1], matrix[2]   + m.matrix[2], matrix[3]   + m.matrix[3],
					  matrix[4]  + m.matrix[4], matrix[5]   + m.matrix[5], matrix[6]   + m.matrix[6], matrix[7]   + m.matrix[7],
					  matrix[8]  + m.matrix[8], matrix[9]   + m.matrix[9], matrix[10]  + m.matrix[10], matrix[11] + m.matrix[11],
					  matrix[12] + m.matrix[12], matrix[13] + m.matrix[13], matrix[14] + m.matrix[14], matrix[15] + m.matrix[15]);
}
Esempio n. 4
0
CMatrix4x4 CMatrix4x4::operator-(CMatrix4x4 &m)
{
	return CMatrix4x4(matrix[0] - m.matrix[0], matrix[1] - m.matrix[1], matrix[2] - m.matrix[2], matrix[3] - m.matrix[3],
					  matrix[4] - m.matrix[4], matrix[5] - m.matrix[5], matrix[6] - m.matrix[6], matrix[7] - m.matrix[7],
					  matrix[8] - m.matrix[8], matrix[9] - m.matrix[9], matrix[10] - m.matrix[10], matrix[11] - m.matrix[11],
					  matrix[12] - m.matrix[12], matrix[13] - m.matrix[13], matrix[14] - m.matrix[14], matrix[15] - m.matrix[15]);
}
Esempio n. 5
0
CEntity::CEntity( CEntityTemplate* Template,				//Pointer to the template for the entity
				  string Name,								//Name of entity				 
				  CVector3 pos,   //( 0.0f, 0.0f, 0.0f )	//Initial positioning of Entity
				  CVector3 rot,   //( 0.0f, 0.0f, 0.0f )	//Initial rotation
				  CVector3 scale )//( 1.0f, 1.0f, 1.0f )	//Initial scale, these and 2 above will create matrix
{
	m_Template = Template;
	m_Name = Name;

	m_UID = Name;

	// Need to scale the meshes bounding radius depending on the scaling of the entity
	m_Scale = scale;
	float rScale = ( scale.x+scale.y+scale.z )/3.0f;
	m_ScaledBoundRadius = rScale * m_Template->Mesh()->BoundingRadius();

	m_ZAxisRadius = m_Template->Mesh()->MaxBounds().z * m_Scale.z;
	m_XAxisRadius = m_Template->Mesh()->MaxBounds().x * m_Scale.x;

	int numNodes = m_Template->Mesh()->GetNumNodes();
	m_WorldMatrices = new CMatrix4x4[numNodes];
	m_LocalMatrices = new CMatrix4x4[numNodes];
	
	for(int i=1; i<numNodes; ++i)
	{
		m_LocalMatrices[i] = m_Template->Mesh()->GetNode( i ).positionMatrix;
	}

	//Overwrite the root node with desired matrix
	m_LocalMatrices[0] = CMatrix4x4( pos, rot, kZXY, scale );
}				
Esempio n. 6
0
CMatrix4x4 CMatrix4x4::operator /(float f)
{
   if(f == 0) f = 1;
   f = 1/f;

   return CMatrix4x4(matrix[0]  * f, matrix[1]  * f, matrix[2]  * f, matrix[3]  * f,
                     matrix[4]  * f, matrix[5]  * f, matrix[6]  * f, matrix[7]  * f,
                     matrix[8]  * f, matrix[9]  * f, matrix[10] * f, matrix[11] * f,
                     matrix[12] * f, matrix[13] * f, matrix[14] * f, matrix[15] * f);
}
Esempio n. 7
0
/*******************************************************************************
*    Cristian Alexandrescu                                                     *
*    2163013577ba2bc237f22b3f4d006856                                          *
*    11a4bb2c77aca6a9927b85f259d9af10db791ce5cf884bb31e7f7a889d4fb385          *
*    bc9a53289baf23d369484f5343ed5d6c                                          *
*******************************************************************************/

#include "matrix4x4.h"

template <>
const CMatrix4x4<float> CMatrix4x4<float>::Identity = CMatrix4x4(
	1.0f, 0.0f, 0.0f, 0.0f,
	0.0f, 1.0f, 0.0f, 0.0f, 
	0.0f, 0.0f, 1.0f, 0.0f,
	0.0f, 0.0f, 0.0f, 1.0f
);

template <>
const CMatrix4x4<float> CMatrix4x4<float>::Zero = CMatrix4x4(
	0.0f, 0.0f, 0.0f, 0.0f,
	0.0f, 0.0f, 0.0f, 0.0f, 
	0.0f, 0.0f, 0.0f, 0.0f,
	0.0f, 0.0f, 0.0f, 0.0f
);