D3DXMATRIX * D3DXMatrixRotationAxis(
D3DXMATRIX * pOut,
CONST D3DXVECTOR3 * pV,
FLOAT Angle
);
D3DXVECTOR3 * D3DXVec3TransformCoord(
D3DXVECTOR3 * pOut,
CONST D3DXVECTOR3 * pV,
CONST D3DXMATRIX * pM
);
____________________________________________
UPDATE: this is what i got for transform
Code: Select all
ScePspFVector3 Vector3TransformCoord(
	ScePspFVector3 vector,
	ScePspFMatrix4 matrix
)
{
	ScePspFVector3 temp;
	temp.x = matrix.x.x * vector.x + matrix.x.y * vector.y + matrix.x.z * vector.z;
	temp.y = matrix.y.x * vector.x + matrix.y.y * vector.y + matrix.y.z * vector.z;
	temp.z = matrix.z.x * vector.x + matrix.z.y * vector.y + matrix.z.z * vector.z;
	return temp;
}
Code: Select all
ScePspFMatrix4 XlMatrixRotationAxis(
	ScePspFVector3 vector,
	float angle 
)
{
	ScePspFMatrix4 temp;
	float sin_a = sin( angle );
	float cos_a = cos( angle );
	float x_y = vector.x * vector.y;
	float x_z = vector.x * vector.z;
	float y_z = vector.y * vector.z;
	temp.x.x = 1 + ( 1 - cos_a ) * ( vector.x * vector.x - 1 );
	temp.x.y = -vector.z * sin_a + ( 1 - cos_a ) * x_y; 	
	temp.x.z =  vector.y * sin_a + ( 1 - cos_a ) * x_z;
	temp.x.w = 0;
	
	temp.y.x =  vector.z * sin_a + ( 1 - cos_a ) * x_y;
	temp.y.y = 1 + ( 1 - cos_a ) * ( vector.y * vector.y - 1 );
	temp.y.z = -vector.x * sin_a + ( 1 - cos_a ) * y_z;
	temp.y.z = 0;
	temp.z.x = -vector.y * sin_a + ( 1 - cos_a ) * x_z;
	temp.z.y =  vector.x * sin_a + ( 1 - cos_a ) * y_z;
	temp.z.z = 1 + ( 1 - cos_a ) * ( vector.z * vector.z -1 );
	temp.z.w = 0;
	
	temp.w.x = 0;			
	temp.w.y = 0;
	temp.w.z = 0;
	temp.w.w = 1;
	return temp;
}
thanks,
-stellar

