code: public Matrix4f frustum(float left, float right, float bottom, float top, float zNear, float zFar, Matrix4f dest) {
          return frustum(left, right, bottom, top, zNear, zFar, false, dest);
      }
docs: Apply an arbitrary perspective projection frustum transformation for a right-handed coordinate system
  using OpenGL's NDC z range of <code>[-1..+1]</code> to this matrix and store the result in <code>dest</code>.
  <p>
  If <code>M</code> is <code>this</code> matrix and <code>F</code> the frustum matrix,
  then the new matrix will be <code>M * F</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * F * v</code>,
  the frustum transformation will be applied first!
  <p>
  In order to set the matrix to a perspective frustum transformation without post-multiplying,
  use {@link #setFrustum(float, float, float, float, float, float) setFrustum()}.
  <p>
  Reference: <a href="http://www.songho.ca/opengl/gl_projectionmatrix.html#perspective">http://www.songho.ca</a>
  
  @see #setFrustum(float, float, float, float, float, float)
  
  @param left
  the distance along the x-axis to the left frustum edge
  @param right
  the distance along the x-axis to the right frustum edge
  @param bottom
  the distance along the y-axis to the bottom frustum edge
  @param top
  the distance along the y-axis to the top frustum edge
  @param zNear
  near clipping plane distance. If the special value {@link Float#POSITIVE_INFINITY} is used, the near clipping plane will be at positive infinity.
  In that case, <code>zFar</code> may not also be {@link Float#POSITIVE_INFINITY}.
  @param zFar
  far clipping plane distance. If the special value {@link Float#POSITIVE_INFINITY} is used, the far clipping plane will be at positive infinity.
  In that case, <code>zNear</code> may not also be {@link Float#POSITIVE_INFINITY}.
  @param dest
  will hold the result
  @return dest