code: 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;
      }
docs: 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