code: @Override
  	public void invert(Matrix3d matrix) {
  		assert matrix != null : AssertMessages.notNullParameter();
  		final double det = matrix.getM00() * matrix.getM11() - matrix.getM01() * matrix.getM10();
  		if (MathUtil.isEpsilonZero(det)) {
  			throw new SingularMatrixException(Locale.getString("E1", det)); //$NON-NLS-1$
  		}
  		set(
  				matrix.getM11() / det,
  				-matrix.getM01() / det,
  				(matrix.getM01() * matrix.getM12() - matrix.getM11() * matrix.getM02()) / det,
  				-matrix.getM10() / det,
  				matrix.getM00() / det,
  				(matrix.getM10() * matrix.getM02() - matrix.getM00() * matrix.getM12()) / det);
  	}
docs: Invert this transformation.
  The inverse transform Tx' of this transform Tx
  maps coordinates transformed by Tx back
  to their original coordinates.
  In other words, Tx'(Tx(p)) = p = Tx(Tx'(p)).
  
  <p>If this transform maps all coordinates onto a point or a line
  then it will not have an inverse, since coordinates that do
  not lie on the destination point or line will not have an inverse
  mapping.
  The <code>determinant</code> method can be used to determine if this
  transform has no inverse, in which case an exception will be
  thrown if the <code>createInverse</code> method is called.
  @param matrix is the matrix to invert
  @see #determinant()
  @throws SingularMatrixException if the matrix cannot be inverted.