Vec2 pointAt(double distance) { return Vec2( origin.x + direction.x * distance, origin.y + direction.y * distance, ); }