code: public Matrix4 setToFrustum (
          double left, double right, double bottom, double top,
          double near, double far, IVector3 nearFarNormal) {
          double rrl = 1f / (right - left);
          double rtb = 1f / (top - bottom);
          double rnf = 1f / (near - far);
          double n2 = 2f * near;
          double s = (far + near) / (near*nearFarNormal.z() - far*nearFarNormal.z());
          return set(n2 * rrl, 0f, (right + left) * rrl, 0f,
                     0f, n2 * rtb, (top + bottom) * rtb, 0f,
                     s * nearFarNormal.x(), s * nearFarNormal.y(), (far + near) * rnf, n2 * far * rnf,
                     0f, 0f, -1f, 0f);
      }
docs: Sets this to a perspective projection matrix.
  
  @return a reference to this matrix, for chaining.