Vector reflect(Vector normal) { final d = 2 * (x * normal.x + y * normal.y); return Vector(x - d * normal.x, y - d * normal.y); }