7.3 Tracer une forme à des tailles diverses

Nous avons vu comment tracer un carré, un rectangle à des tailles différentes. Nous allons reprendre l’exemple de la maison p. § et voir comment modifier le code pour tracer la maison à l’échelle souhaitée.

L’objectif est de passer un argument à la procédure ma pour que selon le paramètre, la maison soit plus ou moins grande. Nous souhaitons que ma 1 trace la maison en taille réelle.
ma 0,5 tracera une maison à l’échelle 0,5.
ma 2 tracera une maison aux dimensions deux fois plus grandes etc

La notion de proportionnalité est bien sûr sous-jacente. En vraie grandeur, la procédure carre était la suivante :

pour carre  
repete 4[av 150 td 90]  
fin

Toutes les dimensions originales de la maison sont multipliées par l’échelle. La procédure carre devient :

pour carre :c  
repete 4[av 150*:c td 90]  
fin

Ainsi quand on tapera carre 2, le carré aura pour côté 150 × 2 = 300. les proportions sont bien respectées ! En fait, on s’aperçoit qu’il va juste falloir reprendre toutes les procédures et changer les longueurs de déplacement de la manière suivante :
av 70 devient av 70* :c
av 45 devient av 45* :c
etc

pour carre :c  
repete 4[av 150*:c  td 90]  
fin  
 
pour tri :c  
repete 3[av 150*:c td 120]  
fin  
 
pour porte :c  
repete 2[av 70*:c td 90 av 50*:c td 90]  
fin  
 
pour che :c  
av 55*:c td 90 av 20*:c td 90 av 20*:c  
fin  
 
pour dep1 :c  
td 90 av 50*:c tg 90  
fin  
 
pour dep2 :c  
tg 90 av 50*:c td 90 av 150*:c td 30  
fin  
 
pour dep3 :c  
lc td 60 av 20*:c tg 90 av 35*:c bc  
fin  
 
pour ma :c  
carre :c dep1 :c porte :c dep2 :c tri :c dep3 :c che :c  
fin