Page 1 sur 2
Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 18:18
par Fabrice
Bonsoir,
Je ne sais pas si le titre est bien choisi, mais je vais essayé d'expliquer ce que je souhaiterais faire.
J'ai écrit la fonction suivante :
*** 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
unitsize(1cm);
import geometry;
void Triangle (int a){
pair z0=(0,0);
pair z1=z0+a;
pair z2=a/2*(1,sqrt(3));
pair[] Z1={};
pair[] Z2={};
pair[] Z3={};
filldraw(z0--z1--z2---cycle,yellow,blue);
for(int i=1 ; i<a; ++i){
Z1.push(scale(i/a,z0)*z1);
Z2.push(scale(i/a,z1)*z2);
Z3.push(scale(i/a,z0)*z2);
}
for(int i=0 ; i<=a-2 ; ++i){
draw(Z3[i]--Z2[i],blue);
draw(Z1[i]--Z3[i],blue);
draw(Z1[i]--Z2[a-2-i],blue);
}}
Triangle(4);
Première question :le fichier qui contient ce code se nomme fig5_ds4.asy. Si je le compile, il porte toujours ce nom, et ceci quelque soit la valeur de a choisie pour la fonction Triangle(a). Je dois compiler ce code quatre fois pour les valeurs a=1, a=2, a=3, a=4. Comment faire pour avoir quatre noms de fichiers différents ?
Deuxième question :Les quatre figures créées, je souhaiterais les placer côte à côte (ou du moins sur la même ligne de base) dans une seule figure.
Suis-je clair ?
Merci.
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 19:14
par maurice
Bonsoir
Pour avoir tout dans le même pdf tu peux ajouter un paramètre dans ta fonction triangle :
*** 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
unitsize(1cm);
import geometry;
void Triangle (int a, pair pos=(0,0)){
transform t=shift(pos);
pair z0=(0,0);
pair z1=z0+a;
pair z2=a/2*(1,sqrt(3));
pair[] Z1={};
pair[] Z2={};
pair[] Z3={};
filldraw(t*(z0--z1--z2---cycle),yellow,blue);
for(int i=1 ; i<a; ++i){
Z1.push(scale(i/a,z0)*z1);
Z2.push(scale(i/a,z1)*z2);
Z3.push(scale(i/a,z0)*z2);
}
for(int i=0 ; i<=a-2 ; ++i){
draw(t*(Z3[i]--Z2[i]),blue);
draw(t*(Z1[i]--Z3[i]),blue);
draw(t*(Z1[i]--Z2[a-2-i]),blue);
}}
Triangle(1);
Triangle(2,1);
Triangle(3,3);
Triangle(4,6);
ou t'inspirer de ce qui est
là.
Par contre, pour faire 4 pdf avec un seul fichier .asy, je ne sais pas !
Bruno
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 19:20
par Fabrice
Bonsoir Maurice,
Cela répond en partie à ce que je veux faire, merci.
Petite question :
je pensais qu'il fallait faire :
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 19:37
par maurice
Fabrice a écrit :Petite question :
je pensais qu'il fallait faire :
Bonne question ! Je ne m'en étais même pas rendu compte et ce n'étais pas volontaire !
J'ai regardé la doc et je suppose que ça vient de là :
Asymptote makes extensive use of affine transforms. A pair (x,y) is transformed by the transform t=(t.x,t.y,t.xx,t.xy,t.yx,t.yy) to (x’,y’), where
x’ = t.x + t.xx * x + t.xy * y
y’ = t.y + t.yx * x + t.yy * y
et
The implicit initializer for transforms is identity().
???
Bruno
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 19:54
par maurice
maurice a écrit :je suppose que ça vient de là
En fait non, en ligne de commande, on voit se qui se passe :
Code : Tout sélectionner
$ asy
Welcome to Asymptote version 2.22svn-r5544 (to view the manual, type help)
> pair a=2
> a
(2,0)
>
Ça concernait le type pair et pas les transformations !
bruno
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 20:49
par Fabrice
Bonsoir,
Je souhaiterais afficher sous les triangles : T1, T2, T3. Il y a un petit soucis : je ne sais pas comment faire pour que le paramètre a soit pris en compte par la routine label().
*** 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
unitsize(1cm);
import geometry;
void Triangle (int a, pair pos=(0,0)){
transform t=shift(pos);
pair z0=(0,0);
pair z1=z0+a;
pair z2=a/2*(1,sqrt(3));
pair[] Z1={};
pair[] Z2={};
pair[] Z3={};
filldraw(t*(z0--z1--z2---cycle),green,blue);
for(int i=1 ; i<a; ++i){
Z1.push(scale(i/a,z0)*z1);
Z2.push(scale(i/a,z1)*z2);
Z3.push(scale(i/a,z0)*z2);
}
for(int i=0 ; i<=a-2 ; ++i){
draw(t*(Z3[i]--Z2[i]),blue);
draw(t*(Z1[i]--Z3[i]),blue);
draw(t*(Z1[i]--Z2[a-2-i]),blue);
}label("\textbf{T\boldmath{$_{a}$}}",pos+a/2,2*S);}
Triangle(1,(0,0));
Triangle(2,(2,0));
Triangle(3,(5,0));
Merci.
Re: Nom de fichier et fonction void()
Posté : jeu. 14 févr. 2013, 21:07
par chellier
Fabrice a écrit :Bonsoir,
Je souhaiterais afficher sous les triangles : T1, T2, T3. Il y a un petit soucis : je ne sais pas comment faire pour que le paramètre a soit pris en compte par la routine label().
Bonsoir,
C'est possible avec la commande format :
Code : Tout sélectionner
label(format("\textbf{T\boldmath{$_{%i}$}}",a),pos+a/2,2*S);}
Christophe
Re: Nom de fichier et fonction void()
Posté : ven. 15 févr. 2013, 16:49
par Fabrice
Bonjour,
chellier a écrit :C'est possible avec la commande format :
Merci Christophe.
Re: Nom de fichier et fonction void()
Posté : sam. 16 févr. 2013, 18:17
par GM
Bonjour,
j'ai lu que le problème a été résolu par un autre biais... mais j'ai vu passer cette question :
Fabrice a écrit :Comment faire pour avoir quatre noms de fichiers différents ?
... auquel je donne une réponse pour des figures en devenir.
On peut avoir plusieurs fichiers-images d'une figure évolutive... à partir d'un seul script :
- Avec la commande suivante en fin d'une boucle de compteur k
lorsque les éléments sont dessinés dans currentpicture... qu'il faut penser à vider avant de passer à la figure suivante ;
- Avec la commande suivante en fin d'une boucle de compteur k
si pic est une nouvelle instance de picture à chaque début de boucle, dans laquelle sont dessinés les objets de la boucle.
Et il y aurait des variantes... pour notamment ne venir ajouter à une figure que ce qui manque dans la précédente.
Re: Nom de fichier et fonction void()
Posté : sam. 16 févr. 2013, 22:48
par Fabrice
Bonsoir Gaetan,
Peux-tu tester avec mon code, car chez moi, je n'obtiens pas des fichiers contenant les figures attendues ?
Merci.