Vector2 reflected(Vector2 normal) { final d = 2 * dot(normal); return Vector2(x - d * normal.x, y - d * normal.y); }