docs: def move(self, v):
          """v is a tuple of x/y coordinates to move object"""
  
          # rotate movement vector according to the angle of the object
          vx, vy = v
          vx, vy = (
              vx * math.cos(self.angle) - vy * math.sin(self.angle),
              vx * math.sin(self.angle) + vy * math.cos(self.angle),
          )
  
          def _move(xy):
              x, y = xy
              return x + vx, y + vy
  
          # TODO: detect other objects in the way, stop movement appropriately
  
          self.pts = [p for p in map(lambda x: _move(x), self.pts)]
          self.center = _move(self.center)