from copy import deepcopy

class Quadrat:

    def __init__(self, v, m):
        self.vèrtex = v
        self.mida = m

    def __str__(self):
        """
        Retorna un string en format: 'Quadrat(v, m)' on

        ``v`` és el valor de l'atribut ``vèrtex``, i
        ``m`` és el valor de l'atribut ``mida``.
        """
        return 'Quadrat({}, {})'.format(self.vèrtex, self.mida)

    def té_dins(self, p):
        """
        Retorna True si el Punt2D p és interior al quadrat self i False
        altrament.
        """
        return self.vèrtex.x <= p.x <= self.vèrtex.x +self.mida and self.vèrtex.y <= p.y <= self.vèrtex.y +self.mida 

    def copy(self):
        return deepcopy(self)

    def poligon(self):
       """
       Retorna una llista de tuples amb les coordenades (x, y) dels vèrtexs
       d'un quadrat. Els vèrtexs estan ordenats en sentit horari
       """
       lv = [(self.vèrtex.x, self.vèrtex.y)]
       lv.append((self.vèrtex.x, self.vèrtex.y + self.mida))
       lv.append((self.vèrtex.x + self.mida, self.vèrtex.y + self.mida))
       lv.append((self.vèrtex.x + self.mida, self.vèrtex.y))
       return lv

    def __lt__(self, altre):
        return (self.vèrtex.x, self.vèrtex.y, self.mida) < \
              (altre.vèrtex.x, altre.vèrtex.y, altre.mida) 

