Rotate (about 0,0)
Point<double> rotate(double angle) => Point(x * cos(angle) - y * sin(angle), x * sin(angle) + y * cos(angle));