Arêtes en pointillés d'un polyèdre

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

Arêtes en pointillés d'un polyèdre

Message non lu par Fabrice » sam. 27 déc. 2014, 12:27

Bonjour Gaëtan,
Cela fait un certain déjà que je n'ai plus pratiqué Asymptote, et j'ai donc besoin de ton aide !
Dans le code ci-après, je souhaiterais tracer les arêtes cachées en pointillés (ah, ces règles de perspective !) :

Code : Tout sélectionner

settings.outformat="pdf";
settings.render=32;
settings.prc = false;
size(4cm,0);
import solids;

currentprojection=perspective(10,10,10);


transform3 t=shift(2Z) ;

draw(surface(t*path3(polygon(6))),white+opacity(0.5));
draw(surface(path3(polygon(6))),white+opacity(0.5));
draw(extrude(path3(polygon(6)),2Z),white+opacity(0.5));
Merci,
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Arêtes en pointillés d'un polyèdre

Message non lu par GM » sam. 27 déc. 2014, 16:37

Bonjour Fabrice,

une réponse rapide depuis un téléphone pour
  • dire que je n'ai pas de pc sous la main pour tester ce que tu proposes ;
  • dire qu'Asymptote n'offre malheureusement toujours pas de facilités pour faire cela ;
  • demander si ta figure se limitera à cela... et demander si elle est destinée à être figée dans un document papier, car il est possible de bricoler quelque chose pour une figure figée particulière mais ne rêve pas d'une commande qui te mettra facilement des pointillés sur toutes tes figures 3D à venir.
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 !

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

Re: Arêtes en pointillés d'un polyèdre

Message non lu par Fabrice » dim. 28 déc. 2014, 10:18

Bonjour Gaëtan,
C'est une figure qui doit être incluse dans un document, donc "figée" en quelque sorte.
Je connais un peu les limites d'Asymptote au niveau des arêtes cachées. Je vais préciser ma demande : j'ai tracé la base de mon polyèdre avec :

draw(extrude(path3(polygon(6)),2Z),white+opacity(0.5));

Je cherche à savoir comment récupérer les sommets.
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Arêtes en pointillés d'un polyèdre

Message non lu par GM » dim. 28 déc. 2014, 13:23

extrude renvoie un objet de type surface, qui possède une méthode "corners()" pour donner les sommets de chaque face sous forme de liste de listes de triple (type triple[][]).

Figure asymptote f86f52799e30f9cdbd1ded9c18ef0208
*** 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(6cm,0);
  2. import solids;
  3.  
  4. currentprojection=perspective(10,10,10);
  5.  
  6. transform3 t=shift(2Z) ;
  7.  
  8. path3[] base1=path3(polygon(6)),
  9. base2=t*path3(polygon(6));
  10. surface surfacelaterale=(extrude(path3(polygon(6)),2Z));
  11. triple[][] sommets=surfacelaterale.corners();
  12.  
  13. draw(surface(base1),white+opacity(0.5));
  14. draw(surface(base2),white+opacity(0.5));
  15. draw(surfacelaterale,white+opacity(0.5));
  16.  
  17. draw(sommets[0][0]--sommets[0][1]--sommets[0][2]--sommets[0][3]--cycle
  18. ^^sommets[1][0]--sommets[1][1]--sommets[1][2]--sommets[1][3]
  19. ^^sommets[2][0]--sommets[2][1]--sommets[2][2]--sommets[2][3]
  20. ,red);
  21. draw(sommets[2][2]--sommets[3][2]--sommets[4][2]--sommets[5][2],blue);
  22. draw(sommets[3][0]--sommets[3][1]--sommets[3][2]
  23. ^^sommets[4][0]--sommets[4][1]--sommets[4][2]
  24. ^^sommets[5][0]--sommets[5][1]
  25. ,dashed);
  26.  
  27. pen[] col={blue,red};
  28. for(int k=0; k<sommets.length; ++k)
  29. for(int j=0; j<sommets[k].length; ++j)
  30. label(format("[%i]",k)+format("[%i]",j),sommets[k][j],col[k%2],align=(-1)^(k%2)*Z);


J'ai mis quelques traits en couleur et en pointillés, sans chercher à faire ce que tu voulais exactement : c'est donc à revoir... mais pour t'aider à t'y retrouver dans la numérotation des sommets, je t'ai mis les valeurs des [j] sur la figure.


Rappel : les transparences ne sont pas respectées sur le forum.
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: Arêtes en pointillés d'un polyèdre

Message non lu par GM » dim. 28 déc. 2014, 14:01

J'ai modifié l'exemple précédent pour une numérotation des sommets plus élégante.
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 !

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

Re: Arêtes en pointillés d'un polyèdre

Message non lu par Fabrice » lun. 29 déc. 2014, 11:06

Bonjour Gaëtan,
Merci, c'est très clair comme explications. Par contre, je ne connaissais pas la méthode "corners()"(documentation officielle ?).
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Arêtes en pointillés d'un polyèdre

Message non lu par GM » lun. 29 déc. 2014, 16:03

Fabrice a écrit :Par contre, je ne connaissais pas la méthode "corners()"(documentation officielle ?).
Je ne l'ai pas ouverte.

J'ai fait une recherche dans les *.asy sur "struct surface" pour me souvenir que ce type d'objet est défini dans "tree_surface.asy" (de la ligne 590 à la ligne 837).

Je cherchais pour une instance quelconque surf de type surface les attributs et méthodes possibles.
On y découvre donc
  1. des attributs de l'objet :
    • surf.s de type patch[]
    • surf.index de type int[][]
    • surf.vcyclic de type bool
  2. des méthodes de l'objet :
    • surf.colors(pen[][] palette)
    • surf.corners() de type triple[][]
    • surf.map(real f(triple)) de type real[][]
    • etc, etc,etc.
Ne me demande pas d'expliquer le rôle de chaque attribut ou méthode ! "corners()" m'a semblé clair mais c'est loin d'être le cas de tout le reste. :D

De la même façon, on comprend que surf.s[0] désigne une instance d'objet de type patch
et dans le même fichier, tu as la définition de la structure "patch".
En la lisant, on comprend que :
  • surf.s[0].P correspond à quelque chose de type triple[][]
  • surf.s[0].normals correspond à quelque chose de type triple[]
  • etc, etc, etc.
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: Arêtes en pointillés d'un polyèdre

Message non lu par OG » mar. 30 déc. 2014, 22:36

Bonsoir

Cela date un peu mais il y avait eu des choses sur ce sujet, ici
http://asy.gmaths.net/forum/demandes-d- ... e-t26.html
et là
http://forum.mathematex.net/asymptote-f ... 10244.html

mais je suis bien incapable de remettre le nez dedans aujourd'hui !

Bon réveillon demain

O.G.

Répondre