Gestion des couleurs et pointillés avec des intersections de plans

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 !
Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par Nico56 » mar. 29 mars 2016, 22:39

Bonsoir, je voudrais trouver une manière efficace de gérer les couleurs et les pointillés en fonction des arêtes cachées et des parties de plan cachées. Une idée?
Merci d'avance!
Nico

Voici mon code de base, que je voudrais améliorer.

Figure asymptote f017fa4036a25892204cb1d5007e57d7
*** 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. settings.autobillboard=false; // solution temporaire pour que
  2. // l'option d'affichage par défaut des labels ne soit plus Billboard
  3. // (qui ne fonctionne pas pour l'instant avec obliqueX).
  4.  
  5. settings.render=0; // m'a permis d'éliminer des bandes noires apparues avec le shipout
  6. settings.prc=false; // pas d'interactivité
  7.  
  8. size(7.5cm,0);
  9. import three;
  10. settings.tex="pdflatex";
  11.  
  12. currentprojection=obliqueX;
  13. currentlight=nolight;
  14.  
  15. triple v1=(4,0,0),
  16. v2=(0,6,0),
  17. p0=(-2,-3,0);
  18.  
  19. path3 pl1=plane(v1,v2,p0);
  20. path3 pl2=rotate(90,X)*pl1;
  21.  
  22. draw(surface(pl1),paleblue,black);
  23. draw(surface(pl2),palegreen+opacity(.4),black);
  24.  
  25. draw(v2/2+p0--v2/2+v1+p0,.8bp+red+dashed);
  26.  
  27. draw("$\vec{n}$",(-1,0,2)--(-1,1.5,2),Arrow3(2mm));
  28. draw("$\vec{n'}$",(-1,2,0)--(-1,2,2),Arrow3(2mm));
  29. //shipout(bbox(1mm),invisible);
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

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

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par GM » mer. 30 mars 2016, 18:27

Nico56 a écrit :Bonsoir, je voudrais trouver une manière efficace
Une manière oui................. efficace non : une bidouille de professionnel ! :D

Avec ce code, on obtient la figure qui suit.

Code : Tout sélectionner

settings.tex="pdflatex";
settings.outformat="pdf";
settings.batchView=false;
settings.render=4;
settings.prc=false;
         
size(7.5cm,0);
import three;
         
currentprojection=obliqueX;
currentlight=nolight;
         
triple v1=(4,0,0),
       v2=(0,6,0),
       p0=(-2,-3,0);
         
path3 pl1=plane(v1,v2,p0);
path3 pl2=rotate(90,X)*pl1;
         
draw(surface(pl1),paleblue,1bp+black);
draw(surface(pl2),palegreen,1bp+black);
         
draw(v2/2+p0--v2/2+v1+p0,.8bp+red+dashed);
        
draw("$\vec{n}$",(-1,0,2)--(-1,1.5,2),Arrow3(2mm));
draw("$\vec{n'}$",(-1,2,0)--(-1,2,2),Arrow3(2mm));

// Une technique ci-dessous qui peut faire peur...
// ... qui est un fait un leurre (une rustine contre l'incapacité d'Asymptote de dessiner des traits cachés en pointillés).
pair p1=extension(project(point(pl1,0)),project(point(pl1,3)),project(point(pl2,1)),project(point(pl2,2)));
// tp1 est triple du plan contenant pl2, qui se projette sur l'écran en p1.
triple tp1=invert(p1,normal(pl2),point(pl2,0)); 
draw(tp1--point(pl1,3.5),dashed);

pair p2=extension(project(point(pl1,1)),project(point(pl1,2)),project(point(pl2,0)),project(point(pl2,3)));
// tp2 est triple du plan contenant pl1, qui se projette sur l'écran en p2.
triple tp2=invert(p2,normal(pl1),point(pl1,0));
draw(tp2--point(pl1,3.5),dashed);
Mais ce n'est vraiment pas satisfaisant comme méthode !

Image

C'est en faisant tourner la figure dans AdobeReader que l'on comprend ma supercherie :
Image
Mais si tu ne veux qu'une figure statique... cela pourra peut-être convenir.
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 !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par Nico56 » mer. 30 mars 2016, 18:47

Parfait! Jolies projections...
J'ai remarqué que "settings.render=4;" permet de régler mes problèmes de couleurs sur les plans, est-ce qu'il y a une doc sur les différences entre les différents stades?
Merci encore pour l'aide!
Bonne soirée.
Nico
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

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

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par GM » mer. 30 mars 2016, 18:59

Nico56 a écrit :est-ce qu'il y a une doc sur les différences entre les différents stades?
stade ? tu veux dire "étapes de mon bidouillage" ?

Une explication sur les triples qui interviennent :

Image

Et puis il faut comprendre le couple infernal : project(...), invert(...)

Si pA est le triple correspondant à un point dans le repère de l'espace,
project(pA) est le pair correspondant à ce même point dans un repère 2D collé sur l'image.

Si pB est un pair correspondant à un point de l'image dans un repère 2D collé sur l'image,
invert(pB,V,pC) est un triple correspondant à un point de l'espace qui se projette en ce point de l'image : il y en a une infinité dans l'espace mais un seul dans le plan contenant pC et de vecteur normal V.
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: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par GM » mer. 30 mars 2016, 20:22

Dans l'exemple, j'ai amélioré les définitions de tp1 et tp2 pour ne pas avoir à réfléchir à un vecteur normal qui convient pour le plan souhaité : il y a une fonction qui le fait pour nous. Elle pourrait être utilisée pour tes vecteurs normaux \vv{n} et \vv{n}'.
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 !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par Nico56 » ven. 1 avr. 2016, 08:06

Super, merci!
Et j'ai vu qu'en réglant "settings.render" sur 1, 2, 3, on a des différences notables de qualité, tu peux m'éclairer?
Merci encore pour le temps consacré à mes réponses!
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

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

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par GM » dim. 3 avr. 2016, 21:13

Nico56 a écrit :Et j'ai vu qu'en réglant "settings.render" sur 1, 2, 3, on a des différences notables de qualité, tu peux m'éclairer ?
Pour les options, voir page 162 et 163 de la doc : http://asymptote.sourceforge.net/asymptote.pdf
Image
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 !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par Nico56 » mer. 6 avr. 2016, 18:54

Je n'avais pas cette doc... Je suis pas doué! J'irai chercher dedans avant de poser certaines questions! ;)
Merci encore.
Nico
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

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

Re: Gestion des couleurs et pointillés avec des intersections de plans

Message non lu par GM » sam. 23 mars 2019, 13:41

Presque trois ans plus tard...

Après une discussion sur le même thème dans un autre sujet, je propose une variante :

2019-03-23_132827.jpg
2019-03-23_132827.jpg (84.48 Kio) Vu 22405 fois

Code : Tout sélectionner

settings.tex="pdflatex";
settings.outformat="pdf";
settings.render=4;
         
size(7.5cm,0);
import three;
         
currentprojection=obliqueX;
currentlight=nolight;
         
triple v1=(4,0,0),
       v2=(0,6,0),
       p0=(-2,-3,0);
         
path3 pl1=plane(v1,v2,p0);
path3 pl2=rotate(90,X)*pl1;
         
draw(surface(pl1),paleblue+opacity(.5));
draw(surface(pl2),palegreen+opacity(.5));
         
draw(v2/2+p0--v2/2+v1+p0,.8bp+red+dashed);
        
draw("$\vec{n}$",(-1,0,2)--(-1,1.5,2),Arrow3(2mm));
draw("$\vec{n'}$",(-1,2,0)--(-1,2,2),Arrow3(2mm));

// Une technique ci-dessous qui peut faire peur...
// ... qui est un fait un leurre (une rustine contre l'incapacité d'Asymptote de dessiner des traits cachés en pointillés).
pair p1=extension(project(point(pl1,0)),project(point(pl1,3)),project(point(pl2,1)),project(point(pl2,2)));
// tp1 est triple du plan contenant pl1, qui se projette sur l'écran en p1.
triple tp1=invert(p1,normal(pl1),point(pl1,0)); 
draw(tp1--point(pl1,3.5),dotted);
draw(tp1--point(pl1,0)--point(pl1,1)--point(pl1,2)--point(pl1,3)--point(pl1,3.5),1bp+black);


pair p2=extension(project(point(pl1,1)),project(point(pl1,2)),project(point(pl2,0)),project(point(pl2,3)));
// tp2 est triple du plan contenant pl2, qui se projette sur l'écran en p2.
triple tp2=invert(p2,normal(pl2),point(pl2,0));
draw(tp2--point(pl1,3.5),dotted);
draw(tp2--point(pl2,0)--point(pl2,1)--point(pl2,2)--point(pl2,3)--point(pl2,3.5),1bp+black);
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