'Scale the coordinates of the Point by multiplying by
``x`` and ``y`` after subtracting ``pt`` -- default is (0, 0) --
and then adding ``pt`` back again (i.e. ``pt`` is the point of
reference for the scaling).
See Also
translate
Examples
>>> from sympy import Point3D
>>> t = Point3D(1, 1, 1)
>>> t.scale(2)
Point3D(2, 1, 1)
>>> t.scale(2, 2)
Point3D(2, 2, 1)'

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

    if pt:
        pt = Point3D(pt)
        return self.translate(*(- pt).args).scale(x, y, z).translate(*pt.args)
    return Point3D((self.x * x), (self.y * y), (self.z * z))
