EntrelacsRenée De Graeve2019 |
Contents
- 1 Un dessin à reproduire en CM2
- 2 Le dessin CM2 en géométrie analytique
- 3 Prolongement pour les grands : le dessin2
- 4 Le dessin2 en géométrie analytique
- 5 Le cannage d’une chaise
- 6 Annexe
1 Un dessin à reproduire en CM2
En CM2 on fait reproduire le dessin suivant sur un papier quadrillé.
1.1 Le dessin CM2 avec la tortue
Il est intéressant de faire faire ce dessin à la tortue !
Pour cela, on va décomposer le dessin en quatre morceaux identiques.
Le dessin ci-dessus est fait en utilisant dessine_tortue 0 au départ :
ainsi le triangle plein représente la position de la tortue au départ et le
triangle "vide" représente la tortue à l’arrivée.
On tape :
maille():={ avance 30; tourne_gauche; avance 60; tourne_gauche; avance 50; tourne_gauche; avance 30; tourne_gauche; avance 20; tourne_gauche; avance 10; tourne_droite; avance 10; tourne_gauche; avance -40; }:;
onload
Remarque
La tortue n’est pas revenue à sa position de départ (i.e. la procédure
maille() n’est pas transparente) mais elle est prête
à faire une nouvelle maille :
On obtient le dessin voulu et la tortue est revenue à sa position de départ.
1.2 Le dessin CM2 en couleur avec des formes pleines et avec la tortue
Faire le dessin en couleur avec des formes pleines.
On peut utiliser la commande rectangle_plein et décomposer la maille
en 3 rectangles :
maille_pleine0():={ rectangle_plein(20,60); tourne_gauche; saute 40; rectangle_plein(20,30); tourne_gauche; saute 10; rectangle_plein(20,10); recule 10; pas_de_cote 30; tourne_droite; }:;
onload
ou bien on utilise la commande polygone_rempli.
Puisque la procédure maille() contient 15 instructions
polygone_rempli a comme argument -15 :
maille_pleine():={ maille(),polygone_rempli -15; }:;
onload
1.3 Introduction des paramètres
On peut alors introduire les paramètres pour changer la couleur.
On utilise c pour la couleur de la maille et f pour la couleur des
5 carrés. On choisit par défaut f=7.
On tape :
maillec(c,f=7):={ si f !=7 alors crayon f; pas_de_cote 30; rectangle_plein; pas_de_cote -30; fsi; crayon c; maille_pleine(); }:;
onload
On obtient le dessin final en tapant :
dessin1_plein(c1,c2,f=7):={ efface; crayon f; rectangle_plein; crayon c; repete(2,maillec(c1,f),maillec(c2,f)); }:;
onload
On obtient le dessin final en tapant :
2 Le dessin CM2 en géométrie analytique
2.1 Sans paramètre
On tape :
sept0():={ polygone(0,3*10,30*(1+2*i),10*(-2 +6*i),10*(-2 +3*i),30*i, 40*i,10*(1+4*i),10);}:; sept0_rempli(c):={ affichage(polygone(0,3*10,30*(1+2*i),10*(-2 +6*i),10*(-2 +3*i),30*i, 40*i,10*(1+4*i),10),c+rempli); }:;
onload
Avec 2 couleurs :
ou bien:
2.2 Avec des paramètres
On tape :
sept(z,t,l):={ polygone(z,z+3*l*exp(i*t),z+3*l*(1+2*i)*exp(i*t),z+l*(-2 +6*i)*exp(i*t),z+l*(-2 +3*i)*exp(i*t), z+3*l*i*exp(i*t), z+4*l*i*exp(i*t),z+l*(1+4*i)*exp(i*t),z+l*exp(i*t)); }:; sept_rempli(z,t,l,c):={ affichage(polygone(z,z+3*l*exp(i*t),z+3*l*(1+2*i)*exp(i*t),z+l*(-2 +6*i)*exp(i*t),z+l*(-2 +3*i)*exp(i*t),z+3*l*i*exp(i*t), z+4*l*i*exp(i*t),z+l*(1+4*i)*exp(i*t),z+l*exp(i*t)),rempli+c); }:; dessingeo1(z,l,c1,c2,f=7):={ local L,k; L:=NULL; pour k de 0 jusque 1 faire L:=L,sept_rempli(z+k*(1+i)*l,k*pi,l,c1); L:=L,sept_rempli(z+l+(-1+i)*l*k,pi/2+k*pi,l,c2); fpour; si f!=7 alors L:=L,affichage(carre(z,z+l),f+rempli); L:=L,affichage(carre(z+3*i*l,z+l+3*i*l),f+rempli); L:=L,affichage(carre(z-3*i*l,z+l-3*i*l),f+rempli); L:=L,affichage(carre(z+3*l,z+4*l),f+rempli); L:=L,affichage(carre(z-3*l,z-2l),f+rempli); fsi; return L; }:;
onload
3 Prolongement pour les grands : le dessin2
On veut réaliser le dessin suivant :
3.1 Le dessin2 avec la tortue
On décompose le dessin en 6 morceaux identiques :
On tape :
crochtor(l):={ avance 2*l; tourne_gauche 60; avance 2*l; saute l; avance l; tourne_gauche 60; avance 2*l; tourne_gauche 60; avance 2*l; tourne_gauche 60; avance 3*l; tourne_gauche 120; avance l; tourne_gauche 60; avance 2*l; repete(3,tourne_droite 60,avance l); saute l; avance 2*l; tourne_droite 180; }:; dessin2(l):={ repete 6,crochtor(l); }:;
onload
3.2 Avec des formes pleines
crochtor est composé de 2 morceaux disjoints : parallelog et croc.
Pour pouvoir utiliser
polygone_rempli on est obligé de faire séparemment le contour de ces
2 morceaux.
On tape :
parallelog(l):={ repete (2,avance l,tourne_gauche 60,avance 2*l,tourne_gauche 120); }:; parallelog_plein(l,c):={ local c0; c0:=crayon; crayon c; parallelog(l);polygone_rempli -8; crayon c0; }:; croc(l):={ avance l; tourne_gauche 60; avance 2*l; tourne_gauche 60; avance 2*l; tourne_gauche 60; avance 3*l; tourne_gauche 120; avance l; tourne_gauche 60; avance 2*l; repete(3,tourne_droite 60,avance l); tourne_gauche 120; avance l; }:; croc_plein(l,c):={ c0:=crayon; crayon c;croc(l);polygone_rempli -19; }:; crochtor_plein(l,c):={ parallelog_plein(l,c); saute l; tourne_gauche 60; saute 3*l; croc_plein(l,c); saute -l; tourne_gauche 60; saute -2*l; }:; dessin2_plein(l,c1,c2,c3,f=7):={ local k; si f !=7 alors crayon f; repete(6,tourne_gauche 60,avance l);polygone_rempli -12; tourne_gauche 60; saute 3*l; tourne_droite 60; saute -l; repete(6,avance l,tourne_gauche 60);polygone_rempli -12; pour k de 0 jusque 4 faire saute -2*l;tourne_gauche 60; repete(6,avance l,tourne_gauche 60);polygone_rempli -12; fpour; avance l; tourne_gauche 60; saute-2*l; fsi; repete(2,crochtor_plein(l,c1),crochtor_plein(l,c2),crochtor_plein(l,c3)); }:;
onload
4 Le dessin2 en géométrie analytique
On écrit ici des procédures sans paramètre.
crochet1():={ local L; L:=NULL; L:=L,7/2-sqrt(3)/2*i; L:=L,5/2-sqrt(3)/2*i; L:=L,3-sqrt(3)*i; L:=L,4-sqrt(3)*i; L:=L,5; L:=L,4+sqrt(3)*i; L:=L,1+sqrt(3)*i; L:=L,3/2+sqrt(3)/2*i; L:=L,7/2+sqrt(3)/2*i; L:=L,4; return [polygone(L),parallelogramme(-sqrt(3)*i,2-sqrt(3)*i,3/2-sqrt(3)/2*i)]; }:; crochet1_plein(c):={ local L; L:=NULL; L:=L,7/2-sqrt(3)/2*i; L:=L,5/2-sqrt(3)/2*i; L:=L,3-sqrt(3)*i; L:=L,4-sqrt(3)*i; L:=L,5; L:=L,4+sqrt(3)*i; L:=L,1+sqrt(3)*i; L:=L,3/2+sqrt(3)/2*i; L:=L,7/2+sqrt(3)/2*i; L:=L,4; return [affichage(polygone(L),c+rempli),affichage(parallelogramme(-sqrt(3)*i, 2-sqrt(3)*i,3/2-sqrt(3)/2*i),c+rempli)]; }:;
onload
5 Le cannage d’une chaise
Voici le dessin que l’on veut obtenir :
5.1 En géométrie analytique
Le dessin est composé d’une succession d’un même motif : le morceau 3 :
et du morceau3 après une rotation :
Le morceau3 est constitué de 5 morceaux :
4 morceau1
et 1 morceau2 :
On tape :
morceau1(z,t,l,c):={ retourne affichage(polygone(z,z-l*i*exp(i*t),z+(l-l*i)*exp(i*t),z+l*(1+i)*exp(i*t)),c+rempli); }:; morceau2(z,t,l,c):={ retourne affichage(polygone(z,z+l*exp(i*t)*(2+sqrt(2))*(1+i),z+l*(2+(2+sqrt(2))*i)*exp(i*t),z-l*sqrt(2)*exp(i*t)),c+rempli); }:; morceau3(z,t,l,c1,c2,c3):={ local L; L:=NULL; L:=L,morceau1(z,t,l,c1); L:=L,morceau1(z+l*(1+i)*exp(i*t),t,l,c2); L:=L,morceau1(z+l*(1+(1+sqrt(2))*i)*exp(i*t),pi+t,l,c1); L:=L,morceau1(z+l*(2+(2+sqrt(2))*i)*exp(i*t),pi+t,l,c2); L:=L,morceau2(z,t,l,c3); retourne L; }:; cannage(z,t,l,c1,c2,c3,c4,c5,c6,p,q):={ local L,k,j; L:=NULL; pour j de 0 jusque q-1 faire pour k de 0 jusque p-1 faire L:=L, morceau3(z+l*(4+sqrt(2))*(k+j*i),t,l,c1,c2,c3); fpour; fpour; pour j de 0 jusque q-1 faire pour k de 0 jusque p-1 faire L:=L, morceau3(z+l*(4+sqrt(2))*(k+j*i)-2*l*i,pi/2,l,c4,c5,c6); fpour; fpour; return L }:;
onload
5.2 Avec la tortue
Voici le dessin que l’on veut obtenir :
On fait la même décomposition que précédemment :
Un trapèze trap(l) et sa forme remplie trap_rempli(l,c) :
Un parallélogramme para(l) et sa forme remplie para_rempli(l,c) :
Les 4 procédures trap(l),trap_rempli(l,c),para(l),para_rempli(l,c)
sont transparentes (i.e. la tortue revient à sa position de départ).
Le morceau morceau(l,c1,c2,c3) composé de deux trap_rempli(l,c1), de deux trap_rempli(l,c2) et de para_rempli(l,c3).
Cette procédure morceau n’est pas transparente car à l’arrivée la
tortue est prète à faire un autre morceau qui sera le motif.
On réalise le motif motif(l,c1,c2,c3,c4,c5,c6) composé de
morceau(l,c1,c2,c3) et de morceau(l,c4,c5,c6)
motif(l,c1,c2,c3,c4,c5,c6) est une procédue transparente.
On écrit ensuite la procédure cannagetor(l,c1,c2,c3,c4,c5,c6,p,q)
qui fait q lignes de p motifs :
Voici les programmes :
trap(l):={ tourne_gauche 45; avance l*sqrt(2); tourne_droite 135; avance 2*l; repete(2,tourne_droite 90,avance l); tourne_droite 90; }:; trap_rempli(l,c):={ crayon c; trap(l);polygone_rempli -9 }:; para(l):={ repete(2,tourne_gauche 45,avance 2*l*(1+sqrt(2)),tourne_gauche 135,avance l*sqrt(2)); }:; para_rempli(l,c):={ crayon c; para(l);polygone_rempli -8 }:; morceau(l,c1,c2,c3):={ trap_rempli(l,c1); para_rempli(l,c3); saute l;tourne_gauche 90;saute l;tourne_droite 90; trap_rempli(l,c2); tourne_gauche 90;saute l*sqrt(2);tourne_gauche 90; trap_rempli(l,c1); saute -l; tourne_droite 90;saute l;tourne_gauche 90; trap_rempli(l,c2); saute 2*l;tourne_droite 90;saute -(4+sqrt(2))*l; }:; motif(l,c1,c2,c3,c4,c5,c6):={ morceau(l,c1,c2,c3); morceau(l,c4,c5,c6); repete 2,saute 2*l,tourne_droite 90; }:; cannagetor(l,c1,c2,c3,c4,c5,c6,p,q):={ repete(q,(repete p,motif(l,c1,c2,c3,c4,c5,c6),saute l*(4+sqrt(2))), saute -p*l*(4+sqrt(2)),pas_de_cote l*(4+sqrt(2))); pas_de_cote -q*l*(4+sqrt(2)) }:;
onload
6 Annexe
Pour avoir un quadrillage en logo et un fond triangulé pour crocntor2()
//fond quadrille //a represente la longueur du carreau et k la couleur du maillage maillage(a=10,k=3):={ local p,c,cc; p:= position; c:=cap; cc:=crayon; leve_crayon;position([0,0]);cap 0;baisse_crayon;crayon k; repete(ceil(260/a),avance(ceil(400/a)*a),pas_de_cote(a), tourne_droite 180, avance(ceil(400/a)*a),pas_de_cote(-a), tourne_droite 180); leve_crayon;position([0,0]);cap 0;baisse_crayon; tourne_gauche; repete(ceil(200/a),avance(ceil(520/a)*a),pas_de_cote(-a), tourne_droite 180, avance(ceil(520/a)*a),pas_de_cote(a), tourne_droite 180); crayon(cc); leve_crayon;position(p); cap(c);baisse_crayon; }:; //fond triangule pour crochtor2() //a represente la longueur du triangle et k la couleur du maillage trigequi(a):=repete(3,avance(a),tourne_gauche 120):; triangule(a,c):={ crayon c;recule(3*a); repete(7,(repete 7,trigequi(a),avance(a)),recule 7*a, tourne_gauche 60, avance a, tourne_gauche -60); }:;
onload