Example #1
0
	/**
	 * Matrix scalar mult
	 */
	void operator *= ( fix32 s )
	{
		for ( int i = 0; i < 4; i++ )
		{
			m_matrix[i][0] = FIXMULT( m_matrix[i][0], s );
			m_matrix[i][1] = FIXMULT( m_matrix[i][1], s );
			m_matrix[i][2] = FIXMULT( m_matrix[i][2], s );
			m_matrix[i][3] = FIXMULT( m_matrix[i][0], s );
		}
	}
Example #2
0
	/**
	 * Matrix scalar multiplication
	 */
	Matrix4fi operator * ( fix32 s ) const
	{
		Matrix4fi r( false );

		for ( int i = 0; i < 4; i++ )
		{
			r.m_matrix[i][0] = FIXMULT( m_matrix[i][0], s );
			r.m_matrix[i][1] = FIXMULT( m_matrix[i][1], s );
			r.m_matrix[i][2] = FIXMULT( m_matrix[i][2], s );
			r.m_matrix[i][3] = FIXMULT( m_matrix[i][0], s );
		}

		return r;
	}
Example #3
0
	/**
	 * Transform a vector and projects it to screen space
	 *
	 * @param sx	The projected screen x coordinate
	 * @param sy	The projected screen y coordinate
	 * @param v		Fixed point vector to transform and project
	 */
	void project( sint32 &sx,
				  sint32 &sy,
				  const Vector3fi &v ) const
	{
		Vector3fi vt = m_transform*v;
		if(vt.m_z == 0) vt.m_z = 1;
		sx = m_swdth + (m_dist*vt.m_x)/vt.m_z;
		sy = m_shght - m_dist*FIXMULT(m_aspect, vt.m_y)/vt.m_z;

	}
Example #4
0
	/**
	 * Matrix-vector multiply
	 *
	 */
	Vector3fi operator * ( const Vector3fi &v ) const
	{
		fix32 x, y, z;

		x = FIXMULT( m_matrix[0][0], v.m_x ) +
			FIXMULT( m_matrix[0][1], v.m_y ) +
			FIXMULT( m_matrix[0][2], v.m_z ) +
			m_matrix[0][3];

		y = FIXMULT( m_matrix[1][0], v.m_x ) +
			FIXMULT( m_matrix[1][1], v.m_y ) +
			FIXMULT( m_matrix[1][2], v.m_z ) +
			m_matrix[1][3];

		z = FIXMULT( m_matrix[2][0], v.m_x ) +
			FIXMULT( m_matrix[2][1], v.m_y ) +
			FIXMULT( m_matrix[2][2], v.m_z ) +
			m_matrix[2][3];

		return Vector3fi( x, y, z );
	}
Example #5
0
	/**
	 * Per element multiplication
	 *
	 */
	fix32 dot ( const Vector3fi &v ) const
	{
		return FIXMULT(m_x, v.m_x)+
			   FIXMULT(m_y, v.m_y)+
			   FIXMULT(m_z, v.m_z);
	}
Example #6
0
	/**
	 * Multiply with scalar
	 *
	 */
	Vector3fi operator * ( fix32 s ) const
	{
		return Vector3fi( FIXMULT( m_x, s ),
						  FIXMULT( m_y, s ),
						  FIXMULT( m_z, s ) );
	}
Example #7
0
	/**
	 * Per element multiplication
	 *
	 */
	Vector3fi operator * ( const Vector3fi &v ) const
	{
		return Vector3fi( FIXMULT(m_x, v.m_x),
						  FIXMULT(m_y, v.m_y),
						  FIXMULT(m_z, v.m_z) );
	}
Example #8
0
	/**
	 * Matrix multiply
	 */
	Matrix4fi operator * ( const Matrix4fi &m ) const
	{
		Matrix4fi r( false );

		for ( int i = 0; i < 4; i++ )
		{
			r.m_matrix[i][0] = FIXMULT( m_matrix[i][0], m.m_matrix[0][0] ) +
							   FIXMULT( m_matrix[i][1], m.m_matrix[1][0] ) +
							   FIXMULT( m_matrix[i][2], m.m_matrix[2][0] ) +
							   FIXMULT( m_matrix[i][3], m.m_matrix[3][0] );
			r.m_matrix[i][1] = FIXMULT( m_matrix[i][0], m.m_matrix[0][1] ) +
							   FIXMULT( m_matrix[i][1], m.m_matrix[1][1] ) +
							   FIXMULT( m_matrix[i][2], m.m_matrix[2][1] ) +
							   FIXMULT( m_matrix[i][3], m.m_matrix[3][1] );
			r.m_matrix[i][2] = FIXMULT( m_matrix[i][0], m.m_matrix[0][2] ) +
							   FIXMULT( m_matrix[i][1], m.m_matrix[1][2] ) +
							   FIXMULT( m_matrix[i][2], m.m_matrix[2][2] ) +
							   FIXMULT( m_matrix[i][3], m.m_matrix[3][2] );
			r.m_matrix[i][3] = FIXMULT( m_matrix[i][0], m.m_matrix[0][3] ) +
							   FIXMULT( m_matrix[i][1], m.m_matrix[1][3] ) +
							   FIXMULT( m_matrix[i][2], m.m_matrix[2][3] ) +
							   FIXMULT( m_matrix[i][3], m.m_matrix[3][3] );
		}

		return r;
	}