public Matrix4f rotate(float ang, float x, float y, float z) {
        return rotate(ang, x, y, z, thisOrNew());
    }
public Matrix4f rotate ( float ang , float x , float y , float z ) { return rotate ( ang , x , y , z , thisOrNew ( ) ) ; }
Apply rotation to this matrix by rotating the given amount of radians
about the specified <code>(x, y, z)</code> axis.
<p>
The axis described by the three components needs to be a unit vector.
<p>
When used with a right-handed coordinate system, the produced rotation will rotate a vector
counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin.
When used with a left-handed coordinate system, the rotation is clockwise.
<p>
If <code>M</code> is <code>this</code> matrix and <code>R</code> the rotation matrix,
then the new matrix will be <code>M * R</code>. So when transforming a
vector <code>v</code> with the new matrix by using <code>M * R * v</code>, the
rotation will be applied first!
<p>
In order to set the matrix to a rotation matrix without post-multiplying the rotation
transformation, use {@link #rotation(float, float, float, float) rotation()}.
<p>
Reference: <a href="http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle">http://en.wikipedia.org</a>

@see #rotation(float, float, float, float)

@param ang
the angle in radians
@param x
the x component of the axis
@param y
the y component of the axis
@param z
the z component of the axis
@return a matrix holding the result