public Matrix4d setOrthoSymmetricLH(double width, double height, double zNear, double zFar, boolean zZeroToOne) {
        if ((properties & PROPERTY_IDENTITY) == 0)
            _identity();
        m00 = 2.0 / width;
        m11 = 2.0 / height;
        m22 = (zZeroToOne ? 1.0 : 2.0) / (zFar - zNear);
        m32 = (zZeroToOne ? zNear : (zFar + zNear)) / (zNear - zFar);
        properties = PROPERTY_AFFINE;
        return this;
    }
public Matrix4d setOrthoSymmetricLH ( double width , double height , double zNear , double zFar , boolean zZeroToOne ) { if ( ( properties & PROPERTY_IDENTITY ) == 0 ) _identity ( ) ; m00 = 2.0 / width ; m11 = 2.0 / height ; m22 = ( zZeroToOne ? 1.0 : 2.0 ) / ( zFar - zNear ) ; m32 = ( zZeroToOne ? zNear : ( zFar + zNear ) ) / ( zNear - zFar ) ; properties = PROPERTY_AFFINE ; return this ; }
Set this matrix to be a symmetric orthographic projection transformation for a left-handed coordinate system using the given NDC z range.
<p>
This method is equivalent to calling {@link #setOrtho(double, double, double, double, double, double, boolean) setOrtho()} with
<code>left=-width/2</code>, <code>right=+width/2</code>, <code>bottom=-height/2</code> and <code>top=+height/2</code>.
<p>
In order to apply the symmetric orthographic projection to an already existing transformation,
use {@link #orthoSymmetricLH(double, double, double, double, boolean) orthoSymmetricLH()}.
<p>
Reference: <a href="http://www.songho.ca/opengl/gl_projectionmatrix.html#ortho">http://www.songho.ca</a>

@see #orthoSymmetricLH(double, double, double, double, boolean)

@param width
the distance between the right and left frustum edges
@param height
the distance between the top and bottom frustum edges
@param zNear
near clipping plane distance
@param zFar
far clipping plane distance
@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