2.12 IMPRESSION

 

 

INTRODUCTION

 

Pour atteindre un meilleur rendu graphique on peut faire recours à l’impression puisque la résolution des imprimantes, typiquement 1200x1200 dpi, est bien meilleure que celle des écrans qui sont souvent limités à 100 dpi. L’impression de graphiques GPanel est réalisée de telle manière que les opérations de dessin sont imprimées sur papier au lieu d’être affichées à l’écran, ce qui engendre des graphiques de type vectoriels d’excellente qualité à l’impression. Pour imprimer un graphique, il faut commencer par définir une fonction nommée de façon arbitraire comportant les instructions du graphique souhaité. Lorsqu’on appelle cette fonction directement, le dessin sera réalisé à l’écran. Par contre, si l’on passe le nom de cette fonction à la fonction printerPlot(), le graphique sera envoyé vers l’imprimante au lieu de s’afficher à l’écran.

L’appel de printerPlot() va ouvrir une boîte de dialogue permettant de régler différentes options d’impression, en particulier le choix de l’imprimante. Il est souvent possible d’imprimer sur des imprimantes virtuelles permettant de créer des fichiers graphiques vectoriels en haute résolution (par exemple au format TIFF ou EPS).

CONCEPTS DE PROGRAMMATION: Graphiques en haute résolution

 

 

UN DRAGON QUI-NE-CRACHE-PAS-DE-FEU

 

Pour montrer un exemple d’impression en haute résolution, demandons à la tortue de dessiner une figure complexe nommée « courbe du dragon ». Bien qu’il soit possible de réaliser cette courbe par pliage de la feuille, il est plus facile de recourir à l’ordinateur. L’implémentation de l’algorithme de pliage est toutefois loin d’être trivial [plus... Faites une recherche sur le Web pour plus d’informations concernant les « dragon curves »].

 

Puisque l’on s’intéresse à l’impression, la fonction figure(s, n, flag) permettant de dessiner la courbe est donnée sans grandes explications. On remarquera néanmoins que la courbe est définie de manière récursive. Les deux appels récursifs différents diminuent tous deux la valeur du paramètre de n à n-1 et l’ancrage de la récursion survient lorsque n est nul. De plus, la fonction demande un paramètre flag prenant les valeurs 1 ou -1 qui indique la direction de dessin.

Pour imprimer l’image, on indique les instructions nécessaires dans la fonction doIt() qui ne prend pas de paramètre. Si l’on appelle directement la fonction doIt(), le dessin apparait à l’écran mais lorsqu’on passe le nom de la fonction doIt à la fonction printerPlot(), le graphique est imprimé sans faire apparaître la tortue.

from gturtle import *

def drawFigure():
    repeat 3:
        fillToPoint(0, 0)    
        rightArc(100, 90)
        right(90)
        rightArc(100, 90)
        right(90)
        left(120)       
    
makeTurtle()
hideTurtle()
setPenColor("black")

while True:    
    drawFigure() 
    delay(100)
    clear() 
    right(20)  
Sélectionner tout le code (Ctrl+C pour copier, Ctrl+V pour coller)

 

 

MEMENTO

 

Il faut faire attention à placer le dessin de manière appropriée sur la feuille avec la fonction setPos(). La position de départ dépend de la taille de la fenêtre tortue ainsi que des paramètres d’impression choisis. Il est possible de réaliser l’impression avec un facteur d’agrandissement:math:`k > 1` ou un facteur de réduction :math:`k<1` en tant que second paramètre de la fonction printerPlot(doIt, k).

 

 

EXERCICES

 

1.

Joshua Goldstein propose d’utiliser des paires d’instructions mouvement/rotation pour créer de jolies images. Une itération est donc constituée des instructions
   forward(s)
   right(a)

Dessiner à l’écran puis imprimer les figures de Goldstein suivantes:
a. 31 itérations avec s = 300 et a = 151
b. 142 itérations avec s = 400 et a = 159.72

À vous de trouver la bonne position de départ pour que le graphique tienne sur la feuille!
   

2.

Une étape peut également consister de deux paires mouvement/rotation différentes.
Dessiner à l’écran puis imprimer la figure de Goldstein suivante:

37 itérations avec s = 77, a = 140.86 puis  s = 310 et a = 112
   

3.

Dessiner à l’écran puis imprimer la figure de Goldstein suivante fabriquées sur trois paires de mouvement/rotation différentes:

47 itérations avec s = 15.4, a = 140.86, puis s = 62 et a = 112 puis finalement s= 57.2 et a = 130