code: def rotate(self, rad):
          
          s, c = [f(rad) for f in (math.sin, math.cos)]
          x, y = (c * self.x - s * self.y, s * self.x + c * self.y)
          return Point(x, y)
docs: Rotate counter-clockwise by rad radians.
  
          Positive y goes *up,* as in traditional mathematics.
  
          Interestingly, you can use this in y-down computer graphics, if
          you just remember that it turns clockwise, rather than
          counter-clockwise.
  
          The new position is returned as a new Point.