code: public Matrix4x3d obliqueZ(double a, double b, Matrix4x3d dest) {
          dest.m00 = m00;
          dest.m01 = m01;
          dest.m02 = m02;
          dest.m10 = m10;
          dest.m11 = m11;
          dest.m12 = m12;
          dest.m20 = m00 * a + m10 * b + m20;
          dest.m21 = m01 * a + m11 * b + m21;
          dest.m22 = m02 * a + m12 * b + m22;
          dest.m30 = m30;
          dest.m31 = m31;
          dest.m32 = m32;
          dest.properties = 0;
          return dest;
      }
docs: Apply an oblique projection transformation to this matrix with the given values for <code>a</code> and
  <code>b</code> and store the result in <code>dest</code>.
  <p>
  If <code>M</code> is <code>this</code> matrix and <code>O</code> the oblique transformation matrix,
  then the new matrix will be <code>M * O</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * O * v</code>, the
  oblique transformation will be applied first!
  <p>
  The oblique transformation is defined as:
  <pre>
  x' = x + a*z
  y' = y + a*z
  z' = z
  </pre>
  or in matrix form:
  <pre>
  1 0 a 0
  0 1 b 0
  0 0 1 0
  </pre>
  
  @param a
  the value for the z factor that applies to x
  @param b
  the value for the z factor that applies to y
  @param dest
  will hold the result
  @return dest