Aller au contenu

Algo & Prog 1 Python : TP séance 05

Rendu du TP sur Ametice :
Suivez les instructions pour le rendu du TP en mettant le bon numéro de séance dans le nom du répertoire.
N'oubliez pas de rendre votre travail à la fin de la séance comme indiqué, même si vous n'avez pas fini la planche de TP, puis de rendre la version finale avant le début de la séance suivante.

Exercice 1. Tracé de courbe de Polynôme avec Tkinter

On se propose de tracer des courbes à partir de la classe Polynome du TP précédent.

1.a. Programme principal

Recopier l'exemple de dessin en TkInter de la planche de TP01, puis recopier au début, juste après les imports, la classe Polynome du TP04 avec toutes ses méthodes.

1.b. Repère

Écrire une classe Repere dont le constructeur reçoit en paramètre une zone_dessin (le Canvas de TkInter créé dans le programme principal) et la stocke en attribut.

Le constructeur stocke également dans des attributs la largeur et la hauteur de la zone de dessin en pixels, qui peuvent être retrouvés par int(zone_dessin.cget("width")) et int(zone_dessin.cget("height")).

Dans le programme principal, la classe Repere sera évidemment instanciée après la création de la zone de dessin.

1.b Bornes du plan réel

Rajouter dans la classe Repere une méthode set_bornes (xmin, xmax, ymin, ymax) 1  qui reçoit en paramètres les bornes délimitant le plan réel qui sera affiché dans la zone de dessin. La méthode stocke ces bornes en attribut.

Appeler cette méthode à la fin du constructeur de manière à initialiser xmin et ymin à -5, xmax et ymax à 5.

1.c. Changement de coordonnées

Nous allons faire correspondre le système de coordonnées en pixels de la zone de dessin (axe des y vers la bas), aux coordonnées dans le plan (axe des y vers le haut) délimité par les bornes xmin, xmax, ymin, ymax stockées dans l'instance :

  • le coin en haut à gauche a les coordonnées (0,0) dans la zone de dessin, et correspond au point (xmin, ymax) dans le plan ;

  • le coin en bas à droite a les coordonnées (largeur-1, hauteur-1), et correspond au point (xmax, ymin) dans le plan.

Rajouter dans la classe Repere la méthode changer_coords_plan_vers_dessin (xp, yp), qui reçoit en paramètres des coordonnées xp, yp dans le plan réel, et renvoie un tuple de coordonnées entières (xd, yd) en pixels dans la zone de dessin.

Rajouter dans la classe Repere la méthode changer_coords_dessin_vers_plan (xd, yd), qui reçoit en paramètres des coordonnées xd, yd en pixels dans la zone de dessin, et renvoie un tuple de coordonnées entières (xp, yp) dans le plan réel.

Dans le programme principal, tester les méthodes sur les 4 coins ainsi que sur le centre de la zone de dessin.

1.d. Tracé des axes

Rajouter dans la classe Repere la méthode dessiner_axes qui dessine les axes du repère réel dans la zone de dessin, en gris.

Il suffit de convertir les coordonnées (0,0) du plan en coordonnées entières (xd0,yd0) en pixels dans la zone de dessin, puis de tracer la ligne horizontale de 0 à largeur-1 passant par ce point, et la ligne verticale de 0 à hauteur-1 passant par ce point.

1.e. Tracé des graduations

Rajouter dans la classe Repere la méthode dessiner_graduations qui dessine (sauf à l'origine) les graduations des unités sur les axes du repère réel dans la zone de dessin, ainsi que

  • sous chaque graduation de l'axe horizontal, la valeur de la coordonnée x,
  • à gauche de chaque graduation de l'axe vertical, la valeur de la coordonnée y.

Pour aligner le texte avec les graduations, utiliser dans zone_dessin.create_text une des valeurs possibles de l'option anchor.

1.f. Classe CourbePolynome

Écrire une classe CourbePolynome dont le constructeur prend les paramètres suivants et les stocke en attributs :

  • une instance repere de la classe Repere,
  • une instance polynome de la classe Polynome,
  • un pas d'échantillonnage optionnel, valant 0.1 par défaut,
  • une couleur de tracé optionnel, valant "blue" par défaut.

1.g. Affichage de l'équation

Rajouter dans la classe CourbePolynome une méthode afficher_equation qui affiche l'équation du polynôme en haut à gauche dans la couleur noir.

1.h. Tracé de la courbe

Rajouter dans la classe CourbePolynome une méthode tracer_courbe qui trace la courbe du polynome dans le repere en reliant par des segments en couleur les points obtenus avec le pas d'échantillonnage.

Conseil : étant donné que create_line peut prendre en paramètre des coordonnées \(x_0,\,y_0,\,x_1,\,y_1,\,x_2,\,y_2,\,\ldots\) pour dessiner une ligne polygonale, il suffit de mémoriser à la suite toutes les coordonnées calculées dans une liste, puis les donner à zone_dessin.create_line en faisant l'expansion de la liste, comme vu en cours.


  1. N'oubliez pas de rajouter self avant le ou les paramètres de la méthode.