Returns the dot product with another point.
double dot(Point other) { return x * other.x + y * other.y; }