code: public Matrix4d rotate(AxisAngle4f axisAngle) {
          return rotate(axisAngle.angle, axisAngle.x, axisAngle.y, axisAngle.z);
      }
docs: Apply a rotation transformation, rotating about the given {@link AxisAngle4f}, to this matrix.
  <p>
  The axis described by the <code>axis</code> vector 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>A</code> the rotation matrix obtained from the given {@link AxisAngle4f},
  then the new matrix will be <code>M * A</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * A * v</code>,
  the {@link AxisAngle4f} rotation will be applied first!
  <p>
  In order to set the matrix to a rotation transformation without post-multiplying,
  use {@link #rotation(AxisAngle4f)}.
  <p>
  Reference: <a href="http://en.wikipedia.org/wiki/Rotation_matrix#Axis_and_angle">http://en.wikipedia.org</a>
  
  @see #rotate(double, double, double, double)
  @see #rotation(AxisAngle4f)
  
  @param axisAngle
  the {@link AxisAngle4f} (needs to be {@link AxisAngle4f#normalize() normalized})
  @return this