path, subpath ...

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: path, subpath ...

Message non lu par GM » ven. 17 août 2012, 15:24

Coyote a écrit :j'ai repris tes exemples sur buildcycle

Les 5 à partir de celui-ci ?

Coyote a écrit :et je ne comprends absolument pas pourquoi un coup il prend l'intersection et un coup il prend la réunion.

Tu n'as pas vu une logique par rapport aux numéros de noeuds ? Regarde bien... en démarrant du noeud 0 de c1 (en bleu)... pour aller construire, en tournant sur c1 dans ce que je vais appeler le sens croissant (noeud 0, puis noeud 1, puis noeud 2, ....), le premier noeud 0 du nouveau path c3 (en vert).

Si tu ne vois pas la suite de la logique qui fonctionne avec les 5 exemples, je vais peut-être devoir ouvrir un nouveau sujet pour expliquer.

Coyote a écrit :Asymptote est encore bien mystérieux pour moi

Pour beaucoup d'entre nous encore : c'est pour cela que c'est rigolo. :mrgreen:
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
Coyote
Messages : 6
Enregistré le : sam. 13 mars 2010, 09:16
Localisation : Chambéry

Re: path, subpath ...

Message non lu par Coyote » sam. 18 août 2012, 09:30

GM a écrit :Les 5 à partir de celui-ci ?

Oui exactement !

GM a écrit :Tu n'as pas vu une logique par rapport aux numéros de noeuds ? Regarde bien... en démarrant du noeud 0 de c1 (en bleu)... pour aller construire, en tournant sur c1 dans ce que je vais appeler le sens croissant (noeud 0, puis noeud 1, puis noeud 2, ....), le premier noeud 0 du nouveau path c3 (en vert).

Si ça y est, je crois ....
Je résumé, ainsi tu pourras confirmer .. ou pas ..
Il part du noeud 0 de c1, arrive à la première intersection, commence alors le nouveau chemin buildcycle.
Il continue sur le chemin c1, jusqu'à la deuxième intersection, à partir de là, il "saute" sur c2, et continue sur c2, jusqu'à revenir à la première intersection (ce qui finit le cycle) .. et du coup c'est limpide !

Faudrait que j'essaie avec des chemins avec 3 ou 4 intersections, il alterne peut-être à chaque fois ?

GM a écrit :Pour beaucoup d'entre nous encore : c'est pour cela que c'est rigolo. :mrgreen:

Je confirme, sans oblier la beauté des graphiques ... :D

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

Re: path, subpath ...

Message non lu par GM » sam. 18 août 2012, 11:26

Coyote a écrit :Faudrait que j'essaie avec des chemins avec 3 ou 4 intersections, il alterne peut-être à chaque fois ?


Il ne tient pas compte de toutes les intersections.

Figure asymptote 9f0e1d590556ab42487f52eff9491c3c
*** 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. size(250,0);
  2. path c[]= {unitsquare,
  3. reverse(shift(.6,.5)*scale(.7)*unitcircle)};
  4. path p=buildcycle(c[0],c[1]);
  5.  
  6. pen colc[]={black,blue},
  7. colp=yellow;
  8. fill(p,palegreen);
  9. for(int k=0; k<c.length; ++k) draw(c[k],2bp+colc[k]);
  10. draw(p,.4bp+colp);
  11.  
  12. defaultpen(fontsize(14pt));
  13. real w=linewidth();
  14. for(int k=0; k<c.length; ++k)
  15. for(int i=0; i<length(c[k]); ++i)
  16. dot(string(i),point(c[k],i),dir(45+k*90),linewidth(12w)+colc[k]);
  17. for(int i=0; i<length(p); ++i)
  18. dot(string(i),point(p,i),SW,linewidth(6w)+.8colp);


Il y a aussi une logique quand il y a davantage que deux paths.

Figure asymptote 0153371af779e43224d8d4848d9f17b8
*** 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. size(250,0);
  2. path c[]= {unitsquare,
  3. reverse(shift(.6,.5)*scale(.7)*unitcircle),
  4. shift(.25,-.25)*yscale(1.2)*unitsquare};
  5. path p=buildcycle(c[0],c[1],c[2]);
  6. pen colc[]={black,blue,brown},
  7. colp=yellow;
  8. fill(p,palegreen);
  9. for(int k=0; k<c.length; ++k) draw(c[k],2bp+colc[k]);
  10. draw(p,.4bp+colp);
  11. defaultpen(fontsize(14pt));
  12. real w=linewidth();
  13. for(int k=0; k<c.length; ++k)
  14. for(int i=0; i<length(c[k]); ++i)
  15. dot(string(i),point(c[k],i),dir(45+k*90),linewidth(12w)+colc[k]);
  16. for(int i=0; i<length(p); ++i)
  17. dot(string(i),point(p,i),SE,linewidth(6w)+.8colp);


J'ai compris la logique des choses (pour des cas non particuliers) mais j'ai la fainéantise de l'expliquer pour l'instant : je suis en vacances. :mrgreen:

Et puis, je ne doute pas qu'il y en d'autres comme moi qui préfèrent chercher que d'avoir la solution.

Après bien sûr, on peut aller voir la définition de la commande buildcycle dans plain_paths.asy mais elle n'est pas si simple à lire. Elle serait à regarder (plutôt que des exemples) pour la compréhension des cas particuliers.

On retiendra que
  • buildcycle définit un nouveau path... qui est susceptible d'être croisé et donc au niveau de coloriage de zone... cela ne correspond à la réunion ou à l'intersection que dans des cas bien bien simples ou marginaux ;
  • la place du premier noeud de chaque path et l'orientation des paths sont capitales pour comprendre ce que l'on obtient avec fill(buildcycle(.....)).
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
Coyote
Messages : 6
Enregistré le : sam. 13 mars 2010, 09:16
Localisation : Chambéry

Re: path, subpath ...

Message non lu par Coyote » mar. 21 août 2012, 13:41

Merci pour le temps passé sur tes vacances .. profite bien !!

Je vais faire des tests differents et tenter de comprendre la chose.
J'avoue que j'aime bien me casser la tete aussi avant d'avoir la réponse toute cuite ;)

En tout cas, merci pour le forum et votre compétence que vous faites partager !

Répondre