Classe Cercle

Utilitzeu el mòdul punt2D [1] dissenyat a l’exercici Classe Punt2D per dissenyar la classe Cercle següent. Deseu-la al fitxer cercle.py.

class cercle.Cercle(ctr, rd)

Retorna un nou cercle tal que el centre és una instància a la classe Punt2D que té com a coordenades els components de la tupla ctr i el radi és rd.

Atributs:

centre

Centre del cercle, una instància a la classe Punt2D.

radi

Radi del cercle

Mètodes:

conté_punt2D(p)

Retorna True si el punt p és dins del cercle i False en cas contrari.

intersecció_cercle(c)

Retorna un string que indiqui la posició relativa del cercle c respecte al cercle. El string pot tenir un del següents valors: “disjunts” si els dos cercles són disjunts, “intersecants” si intersequen, “conté” si c està totalment contingut pel cercle i “contingut” si c conté el cercle.

Aquesta classe ha de suportar l’operació següent:

Operació

Resultat

c1 == c2

retorna True si els centres de c1 i c2 coindideixen i els seus radis són iguals

La classe Cercle també suporta la funció str que retorna un string en format: Cercle(Punt2D(xc, yc), r) on xc i yc són les coordenades del centre del cercle i r el seu radi.

Observacions

  1. En dissenyar el mètode __init__, haureu de vigilar que el paràmetre que rep és una tupla. Per tant, dins d’aquest mètode, cal crear la instància a Punt2D que representa el centre.

  2. Per tal que la comparació entre cercles tingui el comportament esperat, haureu d’implementar el mètode __eq__. Observeu que aquest mètode ha estat implementat també en la classe Punt2D i que per tant podeu utilitzar l’operador == per comparar dos punts.

  3. Per a que la funció str proporcioni la funcionalitat desitjada, haureu de dissenyar el mètode __str__.

Disposeu d’aquest joc de proves al fitxer cercle.txt.

Solució

Disposeu d’una solució al fitxer cercle.py.

Notes