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)