I have a scenegraph where I rotate objects around multiple points. To do this I have to move the objects between different nodes and after a rotation I copy the WorldRotation to the LocalRotation.
This brings up some small approximation errors and objects get out of alignment with each other. In this simulation I know that my object only can have a certain amount of rotation angles.
Each object can only have the angles 0, 1/2pi, pi or 3/2pi around UNIT_X,Y or Z.
My plan was: Realign the objects every X frames
My implementation:
cube.getLocalRotation().toAngles( m_angles );
for( int m = 0; m < 3; m++ )
{
m_angles[m] = FastMath.HALF_PI * FastMath.floor( m_angles[m]/FastMath.HALF_PI + 0.5f );
}
cube.getLocalRotation().fromAngles( m_angles );
This solve the alignment problem but the axes flips for some angles.
Just doing
cube.getLocalRotation().toAngles( m_angles );
cube.getLocalRotation().fromAngles( m_angles );
doesn't give you the same Quaternion when the x angle is 0 and the y and z angle is 1/2pi.
Question:
Anyone see any obvious solution to this problem? Still pretty new to jMonkey so I might have missed some nice feature or misunderstood something ;).