public void div(double r, XYPoint origin) { reduce(origin); div(r); add(origin); }
public void mul(double r, XYPoint origin) { reduce(origin); mul(r); add(origin); }
public void add(XYPoint p) { x += p.x; y += p.y; }
public void reduce(XYPoint p) { x -= p.x; y -= p.y; }
public XYPoint(XYPoint p) : this(p.x, p.y) { }