question du forum asy

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 !
Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: question du forum asy

Message non lu par GM » dim. 15 avr. 2012, 21:59

GM a écrit :pouvoir écarter les flèches des segments mesurés, d'une distance donnée, en toutes circonstances...


Figure asymptote f6a70b802e8f54271b8de10f9bc41a90
*** 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
  1. import geometry;
  2. size(5cm);
  3.  
  4. pair pA=(0,0), pB=(10,0);
  5.  
  6. draw(pA--pB,blue);
  7. distance("x",pA,pB);
  8.  
  9. picture pic1;
  10. draw(pic1,pA--pB,blue);
  11. distance(pic1,"x",pA,pB);
  12. add(pic1.fit(1cm),(0,2));
  13. add(pic1.fit(2cm),(0,4));


GM a écrit :... ce qu'il faudrait pouvoir faire aussi avec les accolades.


Mais je me dis que j'ai dû à un moment donné avoir la solution dans mes tests (que je reprendrai) et que je suis probablement tombé sur une situation telle que celle là qui m'a fait croire que je n'avais pas la solution, en ayant crû le positionnement de point(SE) incorrect. Il faudrait peut-être poser la question à ce propos sur le forum officiel.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 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: question du forum asy

Message non lu par OG » lun. 16 avr. 2012, 09:44

Hello Gaëtan

Bah cette histoire de deferred drawing est toujours délicate à comprendre et à implémenter.
Dans le cas de geometry, le truc style distance n'existant pas il fallait utiliser le deferred drawing.
En reprenant ta 1ère méthode et en ajoutant une boîte qui ne tient uniquement compte du chemin
et pas du label (ce que tu voulais hormis la non prise en compte du label) le point se n'est pas bon non plus.
Ferais-tu une fixation sur point, Truepoint ?

O.G.

Figure asymptote f48a02ecc31ae7e5d073d5e9a27a3d08
*** 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
  1. void cotationaccolade(picture pic=currentpicture,
  2. pair pA, pair pB,
  3. Label L = "", bool Lrot=false,
  4. pen p=currentpen)
  5. {
  6. path brace=(0,0).. controls (3,4) and (5,4) ..(10,4)
  7. --(40,4).. controls (45,4) and (48,4) ..(50,6);
  8. brace=brace--reverse(reflect((50,0),(50,10))*brace);
  9. brace=shift(pA)*rotate(degrees(pB-pA))*scale(abs(pB-pA)/100)*brace;
  10.  
  11. //draw(pic,L,brace,p,align=N);
  12. pic.add(new void(frame f, transform t)
  13. {
  14. transform T = Lrot ? rotate(degrees(pB - pA)) : identity();
  15. draw(f,t*brace,p);
  16. if(L.s != "") {
  17. frame fr;
  18. add(fr,T*L);
  19. pair pos=point(t*brace,L.relative()*length(brace));
  20. add(f,fr,pos,align=N);
  21. }
  22. },true);
  23.  
  24. //pic.addPath(brace,p);
  25. pic.addBox(min(brace), max(brace), min(p), max(p));
  26.  
  27. }
  28. unitsize(2cm);
  29.  
  30. draw((0,0)--(5,2));
  31.  
  32. picture pic;
  33. pair z1=(0,0), z2=(5,-.25);
  34. dot(pic,z1^^z2);
  35. cotationaccolade(pic,z1,z2,L=Label("Text",Relative(.5),purple),2bp+green);
  36. add(pic.fit(10cm),(1,-1));
  37.  
  38.  
  39. picture pic1;
  40. cotationaccolade(pic1,z1,z2,L=Label("Text",Relative(.5),purple),2bp+green);
  41. add(pic1.fit(1cm),(0,1));
  42. add(pic1.fit(2cm),(0,2));
  43.  
  44. dot("se",point(SE),NW,red);
  45. dot("nw",point(NW),SE,red);
  46. dot("SE",truepoint(SE),NW,blue);
  47. dot("NW",truepoint(NW),SE,blue);

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

Re: question du forum asy

Message non lu par GM » lun. 16 avr. 2012, 10:14

OG a écrit :le point se n'est pas bon non plus.

C'est parce que j'ai tenté ce genre de choses et qu'il y avait toujours quelque chose qui n'allait pas dans mes essais, que j'ai posé la question (indirectement) à JCBowman. ;-)
Mais depuis, tu as montré qu'il y a un problème sur ce que renvoie point(SE) avec une figure comportant un simple trait et l'ajout d'une picture décalée donc il n'est plus si étonnant que cela ne va pas avec ma fonction accolade.

OG a écrit :Ferais-tu une fixation sur point, Truepoint ?

Disons que... quitte à l'utiliser dans certaines figures... autant essayer de comprendre comment cela fonctionne.
Moi j'aime bien ajouter un titre à une figure dans un coin... et truepoint(...) est pratique pour cela
donc je me sens obligé de proposer une fonction accolade qui ne fausse pas ce que renvoie truepoint(...)
et quand on s'y intéresse, on ne peut pas fermer les yeux sur point(...).
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 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: question du forum asy

Message non lu par OG » lun. 16 avr. 2012, 15:49

Re

J'avais commencé à traduire en asymptote l'accolade de cmarrow (metapost), mais
par faute de temps j'ai laissé le truc à l'abandon. C'est un peu compliqué (je ne comprends
plus le code) et mettre un label + truepoint ok sera à mon avis super coton.

Ciao

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

Re: question du forum asy

Message non lu par GM » lun. 16 avr. 2012, 16:22

OG a écrit :J'avais commencé à traduire en asymptote l'accolade de cmarrow (metapost)

Je viens d'y jeter un oeil. Comme je n'avais pas de grandes exigences pour la forme, je me suis dit que j'arriverais bien à trouver un path, défini avec un minimum de points, qui ferait un peu illusion.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 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: question du forum asy

Message non lu par OG » lun. 16 avr. 2012, 22:04

Re

J'ai regardé à nouveau le code : je ne comprends rien.
Disons que je ne vois surtout pas comment faire en sorte que truepoint
ou autre soient à peu près juste. Comme a priori la routine prend
en argument n'importe quel chemin pour en faire une accolade-chemin
il faudrait peut-être se limiter à faire une accolade droite.

O.G.

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

Re: question du forum asy

Message non lu par GM » mar. 17 avr. 2012, 18:25

Il semblerait que la diffusion du code sur mathematex était prématurée : il y a un gros bogue.

Olivier peux-tu, sur Mathematex, supprimer l'exemple... pour y mettre simplement un lien vers ce sujet, en précisant qu'on y travaille ?
Car je trouve gênant de donner en exemple quelque chose qui ne va pas du tout. Il suffit de mettre autre chose que (0,0) pour z1 pour s'en convaincre.

On pourra remettre un exemple sur Mathematex, quand cela aura été suffisamment testé pour être sûr que cela fonctionne.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

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

Re: question du forum asy

Message non lu par GM » mar. 17 avr. 2012, 18:29

GM a écrit :il y a un gros bogue


Il manque un "shift(pA)" que je vais ajouter à nos codes précédents.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

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

Re: question du forum asy

Message non lu par GM » mar. 17 avr. 2012, 18:40

GM a écrit :Il manque un "shift(pA)" que je vais ajouter à nos codes précédents.


Et il y a

Code : Tout sélectionner

draw(L,brace,p,align=N);

à remplacer par :

Code : Tout sélectionner

draw(L,brace,p,align=LeftSide);


Et... (sûrement encore d'autres choses).

Figure asymptote 41708fccbb0aca94f38680c3d737c17d
*** 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
  1. void cotationaccolade(picture pic=currentpicture,
  2. pair pA, pair pB,
  3. Label L = "", bool Lrot=false,
  4. pen p=currentpen)
  5. {
  6. path brace=(0,0).. controls (3,4) and (5,4) ..(10,4)
  7. --(40,4).. controls (45,4) and (48,4) ..(50,6);
  8. brace=brace--reverse(reflect((50,0),(50,10))*brace);
  9. brace=shift(pA)*rotate(degrees(pB-pA))*scale(abs(pB-pA)/100)*brace;
  10. draw(L,brace,p,align=LeftSide);
  11. }
  12. ///////////////////////////////////////////////////////////
  13. ///////////////////////////////////////////////////////////
  14.  
  15. size(10cm);
  16. pair z1=(1,0), z2=(5,-.25), z3=(4,-2);
  17. dot(z1^^z2^^z3);
  18. cotationaccolade(z1,z2,"AB",.2bp+green);
  19. cotationaccolade(z2,z3,L=Label("BC",purple),.2bp+green);
  20. cotationaccolade(z3,z1,L=Label("AC",Relative(.75),orange),.2bp+green);


Attention, ce qui est ci-dessus, est une version très provisoire, avec des défauts.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

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

Re: question du forum asy

Message non lu par GM » mar. 17 avr. 2012, 18:51

GM a écrit :Et... (sûrement encore d'autres choses).

... comme, par exemple, le booléen non pris en compte (dans cette version simplifiée temporaire ) pour la rotation du label.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre