V3 getPoint(double x, double y) { return topleft.add(xd.muls(x)).add(yd.muls(y)); }
Ray getRay(double x, double y) { V3 p = topleft.add(xd.muls(x)).add(yd.muls(y)); return Ray(origin, p.sub(origin).normalize()); }