Matrix4d.perspectiveOffCenterFov

Apply an asymmetric off-center perspective projection frustum transformation for a right-handed coordinate system using OpenGL's NDC z range of <code>[-1..+1]</code> to this matrix. <p> The given angles <code>angleLeft</code> and <code>angleRight</code> are the horizontal angles between the left and right frustum planes, respectively, and a line perpendicular to the near and far frustum planes. The angles <code>angleDown</code> and <code>angleUp</code> are the vertical angles between the bottom and top frustum planes, respectively, and a line perpendicular to the near and far frustum planes. <p> If <code>M</code> is <code>this</code> matrix and <code>P</code> the perspective projection matrix, then the new matrix will be <code>M * P</code>. So when transforming a vector <code>v</code> with the new matrix by using <code>M * P * v</code>, the perspective projection will be applied first! <p> In order to set the matrix to a perspective frustum transformation without post-multiplying, use {@link #setPerspectiveOffCenterFov(double, double, double, double, double, double) setPerspectiveOffCenterFov}.

@see #setPerspectiveOffCenterFov(double, double, double, double, double, double)

@param angleLeft the horizontal angle between left frustum plane and a line perpendicular to the near/far frustum planes. For a symmetric frustum, this value is negative. @param angleRight the horizontal angle between right frustum plane and a line perpendicular to the near/far frustum planes @param angleDown the vertical angle between bottom frustum plane and a line perpendicular to the near/far frustum planes. For a symmetric frustum, this value is negative. @param angleUp the vertical angle between top frustum plane and a line perpendicular to the near/far frustum planes @param zNear near clipping plane distance. This value must be greater than zero. If the special value {@link Double#POSITIVE_INFINITY} is used, the near clipping plane will be at positive infinity. In that case, <code>zFar</code> may not also be {@link Double#POSITIVE_INFINITY}. @param zFar far clipping plane distance. This value must be greater than zero. If the special value {@link Double#POSITIVE_INFINITY} is used, the far clipping plane will be at positive infinity. In that case, <code>zNear</code> may not also be {@link Double#POSITIVE_INFINITY}. @return this

Meta