Figure issue d'un exercice donnée à mes cinquièmes : Trouver et représenter les douze hexamants différents.
Ce n'est pas tous les jours que je m'essaie à utiliser des "struct" donc le code ne doit pas être terrible (j'ai toujours du mal à comprendre les initialisations de tableaux).
Merci par avance de vos avis éclairés.
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- import geometry;
- unitsize(1cm);
- // Les douze hexamants. Voir <!-- m --><a class="postlink" href="http://www.recreomath.qc.ca/dict_hexamant.htm">http://www.recreomath.qc.ca/dict_hexamant.htm</a><!-- m -->
- triangle t1=triangleabc(1,1,1), t2=rotate(180,((point)t1.VB+(point)t1.VC)/2)*t1;
- vector u=(point)t1.VB-(point)t1.VA, v=(point)t1.VC-(point)t1.VA, w=(2*v-u)/2;
- struct monamant {
- int sens; // 1;2 pour le triangle t1 respectivement t2
- int tu; // Abscisse dans (O,u,v)
- int tv; // Ordonnée dans (O,u,v)
- void operator init(int sens, int tu, int tv){
- this.sens=sens;
- this.tu=tu;
- this.tv=tv;
- }
- }
- struct polyamant {
- string nom;
- monamant[] Monamants;
- void operator init(string nom, monamant[] Monamants=new monamant[]){
- this.nom=nom;
- this.Monamants=Monamants;
- }
- }
- void DessinePolyamant(polyamant p=polyamant(nom="Monamant", Monamants=new monamant[] {monamant(1,0,0)}), point Origine=(0,0)){
- write(p.nom);
- for(int i=0; i<p.Monamants.length; ++i){
- if (p.Monamants[i].sens == 1) draw(shift(Origine+p.Monamants[i].tu*u+p.Monamants[i].tv*v)*t1);
- else draw(shift(Origine+p.Monamants[i].tu*u+p.Monamants[i].tv*v)*t2);
- }
- }
- polyamant p1=polyamant("rhomboide",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,2,0),monamant(2,0,0),monamant(2,1,0),monamant(2,2,0)});
- polyamant p2=polyamant("houlette",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,1,1),monamant(2,0,0),monamant(2,1,0),monamant(2,-1,0)});
- polyamant p3=polyamant("sphinx",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,2,0),monamant(1,0,1),monamant(2,0,0),monamant(2,1,0)});
- polyamant p4=polyamant("couronne",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,0,1),monamant(2,0,0),monamant(2,1,0),monamant(2,-1,0)});
- polyamant p5=polyamant("yacht",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,0,1),monamant(1,-1,1),monamant(2,0,0),monamant(2,-1,0)});
- polyamant p6=polyamant("pistolet",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,0,1),monamant(2,0,0),monamant(2,0,1),monamant(2,-1,0)});
- polyamant p7=polyamant("chevron",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,1,1),monamant(2,0,0),monamant(2,1,0),monamant(2,1,1)});
- polyamant p8=polyamant("homard",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,0,1),monamant(2,0,0),monamant(2,1,0),monamant(2,0,1)});
- polyamant p9=polyamant("hamecon",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,1,1),monamant(2,0,0),monamant(2,1,0),monamant(2,0,1)});
- polyamant p10=polyamant("papillon",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,0,1),monamant(2,0,0),monamant(2,-1,0),monamant(2,0,-1)});
- polyamant p11=polyamant("serpent",new monamant[] {monamant(1,0,0),monamant(1,1,0),monamant(1,1,1),monamant(2,0,0),monamant(2,1,0),monamant(2,0,-1)});
- polyamant p12=polyamant("hexagone",new monamant[] {monamant(1,0,0),monamant(1,0,1),monamant(1,-1,1),monamant(2,0,0),monamant(2,-1,0),monamant(2,-1,1)});
- DessinePolyamant(p1);
- DessinePolyamant(p2,5u);
- DessinePolyamant(p3,8u);
- DessinePolyamant(p4,12u);
- DessinePolyamant(p5,u-3w);
- DessinePolyamant(p6,5u-3w);
- DessinePolyamant(p7,8u-3w);
- DessinePolyamant(p8,12u-3w);
- DessinePolyamant(p9,-6w);
- DessinePolyamant(p10,5u-6w);
- DessinePolyamant(p11,8u-6w);
- DessinePolyamant(p12,12u-6w);