### ATTENTION : vous devez changer la variable suivante et mettre votre ### nom à la place... nom = "hyvernat" from images import * import math import random ############ # Question 1 # def rectangle(image, x0, y0, largeur, hauteur, couleur): """Dessine un rectangle plein dans l'image "image". Les arguments "x0" et "y0" désignent le point en haut à gauche du rectangle, l'argument "largeur" sa largeur, l'argument "hauteur" sa hauteur et l'argument "couleur" sa couleur. Attention, si le rectangle ne tient pas dans "image", il ne faudra dessiner qu'un bout du rectangle...""" return ############ # Question 2 # def rectangle_degrade(image, x0, y0, largeur, hauteur, couleur_haut, couleur_bas): """Dessine un rectangle dans l'image "image" qui est forcément au format "PPM" (couleurs RGB). Les coordonnées du point haut/gauche du rectangle sont "x0" et "y0" ; et ses dimensions sont "largeur" et "hauteur". Le rectangle contient un dégradé de couleurs : de "couleur_haut" en haut du rectangle, jusqu'à "couleur_bas" en bas du rectangle. """ assert (image.format == "PPM") return ############ # Question 3 # def disque(image, x0, y0, rayon, couleur): """Dessine un disque dans l'image "image". Les arguments "x0" et "y0" désignent le centre, l'argument "rayon" le rayon et "couleur" sa couleur.""" return ############ # Question 4 # def cercle(image, x0, y0, rayon, couleur): """Dessine un disque dans l'image "image". Les arguments "x0" et "y0" désignent le centre, l'argument "rayon" le rayon et "couleur" sa couleur.""" return ############ # Question 5 # def segment(image, x1, y1, x2, y2, couleur): """Dessine un segment dans l'image "image". Les arguments "x1", "y1" et "x2","y2" désignent les coordonnées des extrémités du segment.""" ############ # Question 6 # def art_moderne(nom, largeur, hauteur, nb_fig): return ### ### la fonction principale qui teste les procédures du TP ### def tp1(): """fonction de test : c'est elle qui lance toutes les autres fonctions""" if (nom == "hyvernat"): print("**************************************************") print("Erreur : vous n'avez pas changé la valeur de la") print("variable 'nom' en haut du fichier (ligne 3)") print("**************************************************") return import sys, os.path ce_fichier = os.path.basename(sys.argv[0]) if ce_fichier != "tp1-"+nom+".py": print("*************************************************") print("Erreur : votre fichier devrait s'appeler") print(" tp1-{}.py".format(nom)) print("(Il s'appelle {}...)".format(ce_fichier)) print("Changez le nom de votre fichier et recommencez...") print("*************************************************") return ### constantes pour les couleurs habituelles rouge = (255, 0, 0) vert = (0, 255, 0) bleu = (0, 0, 255) blanc = (255, 255, 255) gris = (127, 127, 127) orange = (255, 165, 0) # question 1 # (n'hésitez pas à changer les paramètres pour tester ce qu'il se # passe...) im = Image("PBM", 10, 10) rectangle(im, 4,4, 3,3, 1) im.sauve(nom + "-petit_carre") im = Image("PGM", 10, 10, 166) rectangle(im, 4,4, 3,3, 42) im.sauve(nom + "-petit_carre") im = Image("PPM", 10, 10, bleu) rectangle(im, 4,4, 3,3, orange) im.sauve(nom + "-petit_carre") largeur = 100 hauteur = 200 im = Image("PPM", largeur, hauteur, gris) rectangle(im, 25, 45, 33, 73, rouge) rectangle(im, 60, 150, 20, 100, bleu) rectangle(im, 10, 50, 100, 10, vert) im.sauve(nom + "-question_1") # question 2, 3 et 4 : quelques rectangles degradés, quelques disques et # cercles largeur = 512 hauteur = 512 im = Image("PPM", largeur, hauteur, (0, 0, 0)) rectangle_degrade(im, 10, 10, 256, 256, rouge, blanc) rectangle_degrade(im, 200, 300, 500, 128, vert, bleu) rectangle_degrade(im, 400, 20, 50, 500, (255, 255, 0), (0, 255, 255)) rectangle_degrade(im, 460, 460, 50, 50, bleu, bleu) im.sauve(nom + "-question_2" + "-degrades") disque(im, 200, 200, 50, rouge) disque(im, 500, 200, 100, bleu) im.sauve(nom + "-question_3" + "-disques") cercle(im, 256, 256, 200, vert) cercle(im, 40, 500, 100, rouge) im.sauve(nom + "-question_4" + "-cercles") # question 5 : segments im = Image("PBM", 100, 100, 1) segment(im, 50, 50, 60, 60, 0) segment(im, 50, 50, 60, 70, 0) segment(im, 50, 50, 60, 80, 0) segment(im, 50, 50, 60, 90, 0) segment(im, 50, 50, 70, 60, 0) segment(im, 50, 50, 80, 60, 0) segment(im, 50, 50, 90, 60, 0) segment(im, 50, 50, 40, 60, 0) segment(im, 50, 50, 40, 70, 0) segment(im, 50, 50, 40, 80, 0) segment(im, 50, 50, 40, 90, 0) segment(im, 50, 50, 30, 60, 0) segment(im, 50, 50, 20, 60, 0) segment(im, 50, 50, 10, 60, 0) segment(im, 50, 50, 60, 10, 0) segment(im, 50, 50, 60, 20, 0) segment(im, 50, 50, 60, 30, 0) segment(im, 50, 50, 60, 40, 0) segment(im, 50, 50, 70, 40, 0) segment(im, 50, 50, 80, 40, 0) segment(im, 50, 50, 90, 40, 0) segment(im, 50, 50, 10, 40, 0) segment(im, 50, 50, 20, 40, 0) segment(im, 50, 50, 30, 40, 0) segment(im, 50, 50, 40, 40, 0) segment(im, 50, 50, 40, 30, 0) segment(im, 50, 50, 40, 20, 0) segment(im, 50, 50, 40, 10, 0) segment(im, 50, 50, 50, 10, 0) segment(im, 50, 50, 50, 90, 0) segment(im, 50, 50, 10, 50, 0) segment(im, 50, 50, 90, 50, 0) im.sauve(nom + "-question_5" + "-segments") # question 6 : art moderne ?? largeur = 512 hauteur = 256 art_moderne(nom + "-question_6" + "-art_moderne", largeur, hauteur, 50)