from punt2D import Punt2D
import math

class Punt2DTG(Punt2D):
    def translacio(self, dx=0.0, dy= 0.0):
        self.x = self.x + dx
        self.y = self.y + dy
    
    def escalat(self, centre, sc=1.0):
        self.x = (self.x - centre.x) * sc + centre.x
        self.y = (self.y - centre.y) * sc + centre.y

    def rotacio(self, centre, angle = 0.0):
        sa, ca = math.sin(angle), math.cos(angle)
        x, y = self.x - centre.x, self.y-centre.y
        self.x = ca * x - sa * y + centre.x
        self.y = sa * x + ca * y + centre.y

    def __str__(self):
        return 'Punt2D({}, {})'.format(round(float(self.x), 1), round(float(self.y), 1))
