### ### info223 ### devoir à la maison ### étudiant : ### filière : ### def valide(rect): """Renvoie True si le rectangle est valide.""" return False def surface(rect): """Renvoie la surface (en pixel) du rectangle.""" return 0 def dedans(r,x,y): """Renvoie True si le point de coordonnées (x,y) est à l'intérieur de rectangle r.""" return False def intersection(rect1, rect2): """Calcule l'intersection de deux rectangles. Renvoie None si les rectangles ne s'intersectent pas.""" return None def gere_transparence(Rs): """Découpe le plan en petits rectangles à partir des rectangles de la liste Rs. Chacune des coordonnées (abscisse ou ordonnée) des petits rectangles est une coordonnée d'un des rectangles de Rs. La transparence de chacun des petits rectangles est obtenue en additionnant les transparences des grands rectangles qui le contiennent. La fonction renvoie la liste de ces petits rectangles. """ return [] ### ### Fonction pour l'affichage graphique ### from tkinter import * def affiche_rectangles(rects,largeur=400,hauteur=400): """Affiche les rectangles de la liste Rs dans une fenêtre graphique.""" root = Tk() root.title('test') root.resizable(width=False, height=False) fenetre = Canvas(root,width=largeur,height=hauteur) fenetre.pack() root.bind("q", lambda _: root.destroy()) Label(root,text="q pour quitter").pack() fenetre.create_rectangle(0,0,largeur,hauteur,fill='white') for r in rects: t = min(max(0,255-r['transparence']),255) fenetre.create_rectangle(r['x1'],r['y1'],r['x2'],r['y2'],width=0,fill="#{:02x}{:02x}{:02x}".format(t,t,t)) root.mainloop() ### ### deux fonctions qui génèrent des listes rectangles pour tester votre ### fonction gere_transparence ### def test1(): Rs = [] for i in range(11): Rs.append( {'x1':10*i,'y1':10*i , 'x2':300+10*i,'y2':300+10*i, 'transparence':32} ) return Rs def test2(n=9): from random import randint Rs = [] for i in range(n): r = {} r['x1'] = randint(0,10)*40 r['y1'] = randint(0,10)*40 r['x2'] = randint(0,10)*40 r['y2'] = randint(0,10)*40 if r['x1'] > r['x2']: r['x1'],r['x2'] = r['x2'],r['x1'] if r['y1'] > r['y2']: r['y1'],r['y2'] = r['y2'],r['y1'] r['transparence'] = randint(40,120) Rs.append(r) return Rs if __name__ == "__main__": Rs = [] Rs.append( {'x1':40 , 'x2':200 , 'y1':300 , 'y2':380 , 'transparence':70} ) Rs.append( {'x1':10 , 'x2':70 , 'y1':280 , 'y2':340 , 'transparence':90 } ) Rs.append( {'x1':30 , 'x2':220 , 'y1':190 , 'y2':250 , 'transparence': 120} ) Rs.append( {'x1':230 , 'x2':350 , 'y1':100 , 'y2':180 , 'transparence':130 } ) Rs.append( {'x1':100 , 'x2':300 , 'y1':130 , 'y2':320 , 'transparence':60 } ) Rs.append( {'x1':130 , 'x2':160 , 'y1':40 , 'y2':340 , 'transparence':70 } ) Rs.append( {'x1':220 , 'x2':320 , 'y1':250 , 'y2':350 , 'transparence':170 } ) Rs.append( {'x1':250 , 'x2':270 , 'y1':140 , 'y2':300 , 'transparence':100 } ) # ou Rs = test1() # ou Rs = test2(9) affiche_rectangles(gere_transparence(Rs))