public Matrix4x3f reflect(float a, float b, float c, float d, Matrix4x3f dest) {
        if ((properties & PROPERTY_IDENTITY) != 0)
            return dest.reflection(a, b, c, d);

        float da = a + a, db = b + b, dc = c + c, dd = d + d;
        float rm00 = 1.0f - da * a;
        float rm01 = -da * b;
        float rm02 = -da * c;
        float rm10 = -db * a;
        float rm11 = 1.0f - db * b;
        float rm12 = -db * c;
        float rm20 = -dc * a;
        float rm21 = -dc * b;
        float rm22 = 1.0f - dc * c;
        float rm30 = -dd * a;
        float rm31 = -dd * b;
        float rm32 = -dd * c;

        // matrix multiplication
        dest.m30 = m00 * rm30 + m10 * rm31 + m20 * rm32 + m30;
        dest.m31 = m01 * rm30 + m11 * rm31 + m21 * rm32 + m31;
        dest.m32 = m02 * rm30 + m12 * rm31 + m22 * rm32 + m32;
        float nm00 = m00 * rm00 + m10 * rm01 + m20 * rm02;
        float nm01 = m01 * rm00 + m11 * rm01 + m21 * rm02;
        float nm02 = m02 * rm00 + m12 * rm01 + m22 * rm02;
        float nm10 = m00 * rm10 + m10 * rm11 + m20 * rm12;
        float nm11 = m01 * rm10 + m11 * rm11 + m21 * rm12;
        float nm12 = m02 * rm10 + m12 * rm11 + m22 * rm12;
        dest.m20 = m00 * rm20 + m10 * rm21 + m20 * rm22;
        dest.m21 = m01 * rm20 + m11 * rm21 + m21 * rm22;
        dest.m22 = m02 * rm20 + m12 * rm21 + m22 * rm22;
        dest.m00 = nm00;
        dest.m01 = nm01;
        dest.m02 = nm02;
        dest.m10 = nm10;
        dest.m11 = nm11;
        dest.m12 = nm12;
        dest.properties = properties & ~(PROPERTY_IDENTITY | PROPERTY_TRANSLATION);

        return dest;
    }
public Matrix4x3f reflect ( float a , float b , float c , float d , Matrix4x3f dest ) { if ( ( properties & PROPERTY_IDENTITY ) != 0 ) return dest . reflection ( a , b , c , d ) ; float da = a + a , db = b + b , dc = c + c , dd = d + d ; float rm00 = 1.0f - da * a ; float rm01 = - da * b ; float rm02 = - da * c ; float rm10 = - db * a ; float rm11 = 1.0f - db * b ; float rm12 = - db * c ; float rm20 = - dc * a ; float rm21 = - dc * b ; float rm22 = 1.0f - dc * c ; float rm30 = - dd * a ; float rm31 = - dd * b ; float rm32 = - dd * c ; dest . m30 = m00 * rm30 + m10 * rm31 + m20 * rm32 + m30 ; dest . m31 = m01 * rm30 + m11 * rm31 + m21 * rm32 + m31 ; dest . m32 = m02 * rm30 + m12 * rm31 + m22 * rm32 + m32 ; float nm00 = m00 * rm00 + m10 * rm01 + m20 * rm02 ; float nm01 = m01 * rm00 + m11 * rm01 + m21 * rm02 ; float nm02 = m02 * rm00 + m12 * rm01 + m22 * rm02 ; float nm10 = m00 * rm10 + m10 * rm11 + m20 * rm12 ; float nm11 = m01 * rm10 + m11 * rm11 + m21 * rm12 ; float nm12 = m02 * rm10 + m12 * rm11 + m22 * rm12 ; dest . m20 = m00 * rm20 + m10 * rm21 + m20 * rm22 ; dest . m21 = m01 * rm20 + m11 * rm21 + m21 * rm22 ; dest . m22 = m02 * rm20 + m12 * rm21 + m22 * rm22 ; dest . m00 = nm00 ; dest . m01 = nm01 ; dest . m02 = nm02 ; dest . m10 = nm10 ; dest . m11 = nm11 ; dest . m12 = nm12 ; dest . properties = properties & ~ ( PROPERTY_IDENTITY | PROPERTY_TRANSLATION ) ; return dest ; }
/* (non-Javadoc)
@see org.joml.Matrix4x3fc#reflect(float, float, float, float, org.joml.Matrix4x3f)