Faire cing figures avec une seule !

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Fabrice
Messages : 118
Enregistré le : sam. 13 mars 2010, 11:41

Faire cing figures avec une seule !

Message non lu par Fabrice » mer. 2 janv. 2019, 12:12

Bonjour,
Le but est de produire les cinq figures ci après :

https://goopics.net/i/r5VP7

J'ai fait une seule figure, mais comment faire pour en avoir cinq séparées ? Je sais que tu vas me répondre qu'il suffit d'en faire cinq, mais mon problème est d'avoir la base du carré principal alignée sur la même ligne de base. Je ne sais pas si je suis suffisamment clair !

Code : Tout sélectionner

import trembling ;
import geometry ;
unitsize(1cm,1cm);

real a = 1.5;

pair centre = (a/2,a/2);

transform h=scale(2/sqrt(2),centre);

path carre = scale(a)*unitsquare ;
path p1 = (a,a)--(a,0)--(0,a) ;
path p2 = (a,a)--(a+a*sqrt(3)/2,a/2)--(a,0) ; 
path p3 = (0,a)--(-a*sqrt(3)/2,a/2)--(0,0) ;

tremble tr=tremble(angle=4,
                   frequency=.5,
                   random=2) ;

add(shift(-1,-1)*grid(25,7,gray)) ;

draw(tr.deform(carre--p1),magenta+2bp) ;
draw(shift(1.5*a,0)*tr.deform(carre--p1--p2),magenta+2bp) ;
draw(shift(5*a,0)*tr.deform(carre--p2--p3),magenta+2bp) ;
draw(shift(7.5*a,0)*tr.deform(carre),magenta+2bp) ;
draw(shift(8*a,-a/4)*rotate(45)*tr.deform(h*carre),magenta+2bp) ;
draw(shift(10.5*a,-a/4)*rotate(45)*tr.deform(h*carre),magenta+2bp) ;
draw(shift(10*a,0)*tr.deform(carre--p1),magenta+2bp) ;
shipout(bbox(Fill(lightgray))) ;

Merci.
fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1417
Enregistré le : dim. 7 mars 2010, 14:50

Re: Faire cing figures avec une seule !

Message non lu par GM » mer. 2 janv. 2019, 13:10

Fabrice a écrit :
mer. 2 janv. 2019, 12:12
Bonjour,
Le but est de produire les cinq figures ci après :

https://goopics.net/i/r5VP7
Bonjour,

as-tu songé à une animation dans un pdf multipage ?

Code : Tout sélectionner

import trembling ;
import geometry ;
import animate;

unitsize(1cm,1cm);

settings.tex="pdflatex";
settings.outformat="pdf";

int a = 2;
pen stylo = magenta+2bp;

pair centre = (a/2,a/2);
transform h=scale(2/sqrt(2),centre);
path carre = scale(a)*unitsquare ;
path p1 = (a,a)--(a,0)--(0,a) ;
path p2 = (a,a)--(a+a*sqrt(3)/2,a/2)--(a,0) ; 
path p3 = (0,a)--(-a*sqrt(3)/2,a/2)--(0,0) ;

tremble tr=tremble(angle=4,
                   frequency=.5,
                   random=2) ;

animation A;

add(shift(-a,-a)*grid(3*a,3*a,grey)) ;
A.add(); save();
draw(tr.deform(carre--p1),stylo) ;
A.add(); restore(); save();
draw(tr.deform(carre--p1--p2),stylo) ;
A.add(); restore(); save();
draw(tr.deform(carre--p2--p3),stylo) ;
A.add(); restore(); save();
draw(tr.deform(carre),stylo) ;
draw(shift(a/2,-a/4)*rotate(45)*tr.deform(h*carre),stylo) ;
A.add(); restore(); save();
draw(tr.deform(carre--p1),stylo) ;
A.add();

A.movie();
Cela génère un pdf multipage
asy_2019_01_02_fabrice_fig2.pdf
(6.32 Kio) Téléchargé 101 fois
et avec un package tel que pdfpagestu peux inclure les pages que tu veux du pdf.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.59)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.52-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.52-1 git) + TexLive2018
Merci de préciser la votre !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Faire cing figures avec une seule !

Message non lu par OG » mer. 2 janv. 2019, 16:43

Fabrice a écrit :
mer. 2 janv. 2019, 12:12
Bonjour,
Le but est de produire les cinq figures ci après :

https://goopics.net/i/r5VP7

J'ai fait une seule figure, mais comment faire pour en avoir cinq séparées ? Je sais que tu vas me répondre qu'il suffit d'en faire cinq, mais mon problème est d'avoir la base du carré principal alignée sur la même ligne de base. Je ne sais pas si je suis suffisamment clair !

En quoi faire cinq figures séparées (dans un même fichier asy) pose un pb d'alignement ?

O.G.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1417
Enregistré le : dim. 7 mars 2010, 14:50

Re: Faire cing figures avec une seule !

Message non lu par GM » mer. 2 janv. 2019, 17:51

OG a écrit :
mer. 2 janv. 2019, 16:43
En quoi faire cinq figures séparées (dans un même fichier asy) pose un pb d'alignement ?
Il nous le dira mais j'imagine qu'il a essayé de faire des figures dans des fichiers distincts sans mettre la grille.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.59)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.52-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.52-1 git) + TexLive2018
Merci de préciser la votre !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Faire cing figures avec une seule !

Message non lu par OG » mer. 2 janv. 2019, 18:13

GM a écrit :
mer. 2 janv. 2019, 17:51
OG a écrit :
mer. 2 janv. 2019, 16:43
En quoi faire cinq figures séparées (dans un même fichier asy) pose un pb d'alignement ?
Il nous le dira mais j'imagine qu'il a essayé de faire des figures dans des fichiers distincts sans mettre la grille.
Peut-être que le pb concerne l'alignement des 5 figures dans le fichier LaTeX ?

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1417
Enregistré le : dim. 7 mars 2010, 14:50

Re: Faire cing figures avec une seule !

Message non lu par GM » mer. 2 janv. 2019, 18:21

OG a écrit :
mer. 2 janv. 2019, 18:13
GM a écrit :
mer. 2 janv. 2019, 17:51
OG a écrit :
mer. 2 janv. 2019, 16:43
En quoi faire cinq figures séparées (dans un même fichier asy) pose un pb d'alignement ?
Il nous le dira mais j'imagine qu'il a essayé de faire des figures dans des fichiers distincts sans mettre la grille.
Peut-être que le pb concerne l'alignement des 5 figures dans le fichier LaTeX ?
oui c'est ce que je sous-entendais.

Voilà une version qui générera 5 fichiers distincts avec une grille invisible pour que l'alignement se passe bien lors de la juxtaposition des images dans le fichier latex.

Code : Tout sélectionner

import trembling ;
import geometry ;

unitsize(1cm,1cm);

settings.tex="pdflatex";
settings.outformat="pdf";

int a = 2;
pen stylo = magenta+2bp;

pair centre = (a/2,a/2);
transform h=scale(2/sqrt(2),centre);
path carre = scale(a)*unitsquare ;
path p1 = (a,a)--(a,0)--(0,a) ;
path p2 = (a,a)--(a+a*sqrt(3)/2,a/2)--(a,0) ; 
path p3 = (0,a)--(-a*sqrt(3)/2,a/2)--(0,0) ;

tremble tr=tremble(angle=4,
                   frequency=.5,
                   random=2);

add(shift(-a,-a)*grid(3*a,3*a,invisible));
save();
draw(tr.deform(carre--p1),stylo) ;
shipout ("fig_fabrice_1.pdf"); restore(); save();
draw(tr.deform(carre--p1--p2),stylo) ;
shipout ("fig_fabrice_2.pdf"); restore(); save();
draw(tr.deform(carre--p2--p3),stylo) ;
shipout ("fig_fabrice_3.pdf"); restore(); save();
draw(tr.deform(carre),stylo) ;
draw(shift(a/2,-a/4)*rotate(45)*tr.deform(h*carre),stylo) ;
shipout ("fig_fabrice_4.pdf"); restore(); save();
draw(tr.deform(carre--p1),stylo) ;
shipout ("fig_fabrice_5.pdf");
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.59)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.52-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.52-1 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1417
Enregistré le : dim. 7 mars 2010, 14:50

Re: Faire cing figures avec une seule !

Message non lu par GM » mer. 2 janv. 2019, 18:42

Je vais virer les "shift(0,0)" inutiles dans les exemples qui précèdent : j'aurais dû les enlever de suite quand j'ai testé le code de Fabrice au lieu de passer la valeur à 0 du décalage horizontal.

Edition (3 min plus tard) : c'est fait... et j'ai défini un "pen".
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.59)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.52-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.52-1 git) + TexLive2018
Merci de préciser la votre !

Fabrice
Messages : 118
Enregistré le : sam. 13 mars 2010, 11:41

Re: Faire cing figures avec une seule !

Message non lu par Fabrice » jeu. 3 janv. 2019, 01:57

Bonjour,
Tout d'abord merci pour avoir pris le temps de solutionner mon problème. En fait, j'ai essayé dans un premier temps de faire cinq figures dans un seul fichier asy en essayant d'utiliser size(5cm,0), par exemple, et en imaginant tirer un trait horizontal de manière à ce que chaque carré de chaque figure repose sur cette ligne (instruction baseline avec tikz je pense), mais sans succès, notamment avec la grille.
Questions :
- J'ai un peu oublié le rôle des instructions save() et restore() : par exemple, si on enlève le save() juste après l'ajout de la grille, on obtient les mêmes figures.
- Comment marquer chaque figure par un numéro entouré par un cercle ?
- Je trouve que dans la figure 4, le carré ne me semble pas inscrit dans le plus plus grand carré ; est-ce le "trembling" ?
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1417
Enregistré le : dim. 7 mars 2010, 14:50

Re: Faire cing figures avec une seule !

Message non lu par GM » jeu. 3 janv. 2019, 03:34

A propos du save(), je l'avais mis pour éviter un warning constaté en console mais il est vrai qu'un avertissement n'est pas une erreur.

Une version complètement ré-écrite (j'ai tout bouleversé :-)) :

Code : Tout sélectionner

import trembling ;
import geometry ;

unitsize(1cm,1cm);

settings.tex="pdflatex";
settings.outformat="pdf";

int a = 2;
pen feutre = magenta+2bp,
    stylo = red+1bp;

tremble tr=tremble(angle=4,
                   frequency=.5,
                   random=2);

path carre = shift(-a/2,-a/2)*scale(a)*unitsquare,
     tcarre = tr.deform(carre),
     tdiago1 = tr.deform(point(carre,0)--point(carre,2)),
     tdiago2  = tr.deform(point(carre,1)--point(carre,3)),
     tpointe = tr.deform(point(carre,1)--(a,0)--point(carre,2));

path[][] fig;

fig.push(tcarre^^tdiago1^^tdiago2);
fig.push(fig[0]^^tpointe);
fig.push(tcarre^^tpointe^^rotate(180)*tpointe);
fig.push(fig[2]^^rotate(90)*tpointe^^rotate(270)*tpointe);
fig.push(fig[3]^^tdiago1^^tdiago2);

add(shift(-1.5a,-1.5a)*grid(3*a,3*a,invisible));
for(var k=0; k<fig.length; ++k){
    save();
    draw(fig[k],feutre) ;
    draw(format("%d",k+1),ellipse,(0,-1.5a),2mm,stylo);
    shipout(format("fig_fabrice_%d.pdf",k+1));
    restore();
}
Edition ultérieure : la modification suggérée dans mon message qui suit en page suivante a été apportée au code ci-dessus.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.59)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.52-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.52-1 git) + TexLive2018
Merci de préciser la votre !

Fabrice
Messages : 118
Enregistré le : sam. 13 mars 2010, 11:41

Re: Faire cing figures avec une seule !

Message non lu par Fabrice » jeu. 3 janv. 2019, 11:55

Salut Gaetan,
GM a écrit :
jeu. 3 janv. 2019, 03:34
Une version complètement ré-écrite (j'ai tout bouleversé :-)) :
Je te reconnais bien là !
Super boulot mais il y a encore un petit soucis au niveau de la numérotation.
Merci.
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

Répondre