A.9 Fonction avancée de remplissage :

Il existe trois primitives permettant de colorier une forme : La primitive remplis, la primitive rempliszone et la primitive remplispolygone.

A.9.1 remplis et rempliszone

On peut apparenter ces primitives avec la fonction "pot de peinture" utilisée dans de nombreux logiciels de retouche d’images. On peut atteindre les bords de la zone de dessin. Il y a deux règles à respecter pour utiliser correctement ces primitives :

  1. Le crayon doit être en position baissé (bc).
  2. La tortue ne doit pas être située sur un pixel de la couleur dont on veut remplir la forme. (Si on veut colorier en rouge, ne pas se trouver soi-même sur du rouge...)

Voyons un exemple pour expliquer la différence entre remplis et rempliszone :


PIC

FIG. A.1: Situation initiale


Le pixel sous la tortue est actuellement de couleur blanche. La primitive remplis va colorier tous les pixels blancs voisins avec la couleur du crayon en cours. Si par exemple on tape : fcc 1 remplis


PIC

FIG. A.2: Avec la primitive remplis


Revenons à présent au premier cas, Si la couleur du crayon de la tortue est le noir, la primitive rempliszone, colorie tous les pixels voisins jusqu’à rencontrer la couleur en cours (ici noire).


PIC

FIG. A.3: Avec la primitive rempliszone, en tapant : fcc 0 rempliszone


Voici, un bel exemple d’utilisation de la primtive remplis :

pour demice :c  
# trace un demi-cercle de diamètre :c  
repete 180 [av  :c*tan 0.5 td 1]  
av :c*tan 0.5  
td 90 av :c  
fin  
 
pour arcenciel :c  
si :c<100 [stop]  
demice :c td 180 av 20 tg 90  
arcenciel :c-40  
fin  
 
pour dep  
lc td 90 av 20 tg 90 bc  
fin  
 
pour demarrer  
ct arcenciel 400 go tg 90 av 20 re 120 de lc td 90 av 20 bc  
fcc 0 remplis dep  
fcc 1 remplis dep  
fcc 2 remplis dep  
fcc 3 remplis dep  
fcc 4 remplis dep  
fcc 5 remplis dep  
fcc 6 remplis dep  
fin


PIC

FIG. A.4: Arc-en-LOGO


A.9.2 La primitive remplispolygone


remplispolygone liste


Cette primitive permet de remplir une forme en utilisant une série de triangles. A chaque nouvelle ligne tracée, un triangle est rempli. La liste passée en argument contient les instructions assurant le découpage en triangles de la forme désirée.