1. Definició de la classe Rectangle¶
Un rectangle orientat segons els eixos de coordenades es pot representar mitjançant les coordenades dels seus vèrtexs inferior esquerre i superior dret. Al fitxer rectangles.py disposeu de la classe Rectangle que haureu de fer servir (no l’heu d’implementar). La seva especificació és la següent:
- class Rectangle(x0, y0, x1, y1, c)¶
Crea un rectangle de color c amb vèrtex inferior esquerre (x0, y0) i superior dret (x1, y1).
Atributs:
- vmin¶
Tupla amb les coordenades del vèrtex inferior esquerre (dos valors enters)
- vmax¶
Tupla amb les coordenades del vèrtex superior dret (dos valors enters)
Mètodes:
- amplada()¶
Retorna l’amplada del rectangle
- alçada()¶
Retorna l’alçada del rectangle
Operacions:
Operació
Resultat
str(r)Retorna un string amb la informació del rectangle (color i coordenades dels seus vèrtexs extrems)
(x,y) in rIndica si el punt de coordenades (x, y) és interior a r. Les coordenades dels punts vmin i vmax es consideren interiors a r.
r1 & r2Rectangle intersecció de r1 i r2, de color negre. Si la intersecció és buida, el resultat és un rectangle de color blanc de vèrtexs (0,0) i (0,0). Es considera que dos rectangles que només comparteixen una aresta o segment d’aresta no intersecten.
1.1. Funció posrel (1 punt)¶
Implementeu la següent funció i la deseu al mòdul posicio (fitxer posicio.py):
- posicio.posrel(x, y, r)¶
- Paràmetres:
- Retorna:
String que indica la zona del pla on cau el punt (x, y) respecte a r. Ha de ser un dels valors
'NO','N','NE','O','X','E','SO','S','SE'en funció de zona del pla on cau el punt respecte al rectangle (nord-oest, nord, nord-est, oest, interior, est, etc.) segons mostra la següent figura:
Zones del pla segons un rectangle de color carabassa. El valor
'X'és la zona interior al rectangle, la qual inclou les coordenades dels vèrtexs inferior esquerre (vmin) i superior dret (vmax). Els punt que cauen sobre les línies puntejades pertanyen a alguna de les zones'E','O','N'o'S'.¶
Exemples d’ús:
>>> from rectangles import Rectangle
>>> from posicio import posrel
>>> r = Rectangle(10, 20, 50, 60, 'blau')
>>> posrel(12, 36, r)
'X'
>>> posrel(0, 0, r)
'SO'
>>> posrel(100, 40, r)
'E'
>>> posrel(100, 100, r)
'NE'
>>> posrel(10, 40, r)
'X'
Disposeu de jocs de prova al fitxer tests-posrel.txt