question: public void rotateZ ( double theta ) { Matrix3D tmp = new Matrix3D ( ) ; double c = Math . cos ( theta ) ; double s = Math . sin ( theta ) ; tmp . set ( 0 , 0 , c ) ; tmp . set ( 0 , 1 , - s ) ; tmp . set ( 1 , 0 , s ) ; tmp . set ( 1 , 1 , c ) ; preMultiply ( tmp ) ; }
target:  rotate transformation about the Z axis