Set this matrix to be an asymmetric off-center perspective projection frustum transformation for a right-handed coordinate system
using the given NDC z range.
<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>
In order to apply the perspective projection transformation to an existing transformation,
use {@link #perspectiveOffCenterFov(double, double, double, double, double, double, bool) perspectiveOffCenterFov()}.
@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}.
@param zZeroToOne
whether to use Vulkan's and Direct3D's NDC z range of <code>[0..+1]</code> when <code>true</code>
or whether to use OpenGL's NDC z range of <code>[-1..+1]</code> when <code>false</code>
@return this
Set this matrix to be an asymmetric off-center perspective projection frustum transformation for a right-handed coordinate system using the given NDC z range. <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> In order to apply the perspective projection transformation to an existing transformation, use {@link #perspectiveOffCenterFov(double, double, double, double, double, double, bool) perspectiveOffCenterFov()}.
@see #perspectiveOffCenterFov(double, double, double, double, double, double, bool)
@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}. @param zZeroToOne whether to use Vulkan's and Direct3D's NDC z range of <code>[0..+1]</code> when <code>true</code> or whether to use OpenGL's NDC z range of <code>[-1..+1]</code> when <code>false</code> @return this