'Override GeometryEntity.scale since it is the radius that must be
scaled (if x == y) or else a new Polygon must be returned.
>>> from sympy import RegularPolygon
Symmetric scaling returns a RegularPolygon:
>>> RegularPolygon((0, 0), 1, 4).scale(2, 2)
RegularPolygon(Point2D(0, 0), 2, 4, 0)
Asymmetric scaling returns a kite as a Polygon:
>>> RegularPolygon((0, 0), 1, 4).scale(2, 1)
Polygon(Point2D(2, 0), Point2D(0, 1), Point2D(-2, 0), Point2D(0, -1))'

def scale(self, x=1, y=1, pt=None):

    if pt:
        pt = Point(pt, dim=2)
        return self.translate(*(- pt).args).scale(x, y).translate(*pt.args)
    if (x != y):
        return Polygon(*self.vertices).scale(x, y)
    (c, r, n, rot) = self.args
    r *= x
    return self.func(c, r, n, rot)
