public Matrix4d reflection(double a, double b, double c, double d) {
        double da = a + a, db = b + b, dc = c + c, dd = d + d;
        m00 = 1.0 - da * a;
        m01 = -da * b;
        m02 = -da * c;
        m03 = 0.0;
        m10 = -db * a;
        m11 = 1.0 - db * b;
        m12 = -db * c;
        m13 = 0.0;
        m20 = -dc * a;
        m21 = -dc * b;
        m22 = 1.0 - dc * c;
        m23 = 0.0;
        m30 = -dd * a;
        m31 = -dd * b;
        m32 = -dd * c;
        m33 = 1.0;
        properties = PROPERTY_AFFINE | PROPERTY_ORTHONORMAL;
        return this;
    }
public Matrix4d reflection ( double a , double b , double c , double d ) { double da = a + a , db = b + b , dc = c + c , dd = d + d ; m00 = 1.0 - da * a ; m01 = - da * b ; m02 = - da * c ; m03 = 0.0 ; m10 = - db * a ; m11 = 1.0 - db * b ; m12 = - db * c ; m13 = 0.0 ; m20 = - dc * a ; m21 = - dc * b ; m22 = 1.0 - dc * c ; m23 = 0.0 ; m30 = - dd * a ; m31 = - dd * b ; m32 = - dd * c ; m33 = 1.0 ; properties = PROPERTY_AFFINE | PROPERTY_ORTHONORMAL ; return this ; }
Set this matrix to a mirror/reflection transformation that reflects about the given plane
specified via the equation <code>x*a + y*b + z*c + d = 0</code>.
<p>
The vector <code>(a, b, c)</code> must be a unit vector.
<p>
Reference: <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/bb281733(v=vs.85).aspx">msdn.microsoft.com</a>

@param a
the x factor in the plane equation
@param b
the y factor in the plane equation
@param c
the z factor in the plane equation
@param d
the constant in the plane equation
@return this