@ Pure @ SuppressWarnings ( "checkstyle:magicnumber" ) public double getRotation ( ) { final double [ ] tmpScale = new double [ 3 ] ; final double [ ] tmpRot = new double [ 9 ] ; getScaleRotate2x2 ( tmpScale , tmpRot ) ; if ( Math . signum ( tmpRot [ 0 ] ) != Math . signum ( tmpRot [ 4 ] ) ) { // Sinuses are on the top-left to bottom-right diagonal // -s c 0 // c s 0 // 0 0 1 return Math . atan2 ( tmpRot [ 4 ] , tmpRot [ 3 ] ) ; } // Sinuses are on the top-right to bottom-left diagonal // c -s 0 // s c 0 // 0 0 1 return Math . atan2 ( tmpRot [ 3 ] , tmpRot [ 0 ] ) ; }
Performs an SVD normalization of this matrix to calculate and return the rotation angle .