Specifically, when I apply a apply a rotation in only the x, y, or z coord, it will calculate correctly. But if I apply rotation in two directions, it does not calculate correct coords. I'm not sure why they would fail running with multiple rotations, since if they each work individually. Here is my code:
Any thoughts? Thanks in advance.
[source lang="cpp"]
/////////// Z /////////////
// atan2( 0, 0 ) will throw an error
if( !(point.x == 0 && point.y == 0) )
{
//get initial 'rotation' of the vert from (0,0,0)
rot = atan2( -point.x, -point.y );
//convert rotation to radians and add it to the existing rotation
rot += CMath::DegreesToRadians( rotations.z );
length = Vector3( point.x, point.y, 0 ).Length();
point.x = -sin( rot ) * length;
point.y = cos( rot ) * length;
}
/////////// Y /////////////
if( !(point.x == 0 && point.z == 0) )
{
rot = atan2( -point.x, -point.z );
rot += CMath::DegreesToRadians( rotations.y );
length = Vector3( point.x, point.z, 0 ).Length();
point.x = sin( rot ) * length;
point.z = -cos( rot ) * length;
}
/////////// X /////////////
if( !(point.z == 0 && point.y == 0) )
{
rot = atan2( -point.z, -point.y );
rot += CMath::DegreesToRadians( rotations.x );
length = Vector3( point.z, point.y, 0 ).Length();
point.z = sin( rot ) * length; //adj
point.y = -cos( rot ) * length; //opp
}
[/source]