[3D]L'axe des ordonnées est coupé

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 !
maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

[3D]L'axe des ordonnées est coupé

Message non lu par maurice » mar. 29 janv. 2013, 18:05

Bonjour,

voici un dessin que tous les amateurs de MPS reconnaitront :

Figure asymptote 7a61645464060603723c8765af88d68d
*** 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 graph3;
  2. size(8cm,0);
  3.  
  4. currentprojection=orthographic(
  5. camera=(9.10256673671288,3.13152911585387,4.08575291798979),
  6. up=(-0.00806649775107991,-0.00159679157407539,0.0191950479956653),
  7. target=(3.5527136788005e-15,-8.88178419700125e-16,1.33226762955019e-15),
  8. zoom=0.818698272139619);
  9.  
  10. triple pD=(2,2,1), pM=(0,4.5,1.8), pA=(0,pD.y,pD.z), pB=(0,pM.y,pD.z), pP=(0,pD.y, 2), pS=(pD.x, pD.y, 0), pI=(0, pM.y, 0);
  11.  
  12. draw(pD--pM, linewidth(1pt)+red);
  13. draw(Label("$V_x$", align=W), pD--pA, Arrow3);
  14. draw(Label("$V_y$", align=S), pA--pB, Arrow3);
  15. draw(Label("$V_z$", align=E), pB--pM, Arrow3);
  16. draw(pS--pD--pB--pI--cycle, dotted);
  17. draw(pA--interp(pA,pM,1.25));
  18. draw(pA--interp(pA,pP,1.25), dotted);
  19.  
  20. dot("$A$", pA, W);
  21. dot("$D$", pD, W);
  22. dot("$M$", pM, NW);
  23. dot("$B$", pB, E);
  24. dot("$P$", pP, E);
  25. dot("$S$", pS, SE);
  26. dot("$I$", pI, S);
  27.  
  28. path3 angle1=arc(pM, pM+.75*unit(pA-pM), pM+.75*unit(pD-pM));
  29. path3 angle2=arc(pA, pA+.5*unit(pM-pA), pA+.5*unit(pP-pA));
  30. path3 angle3=arc(pI, pI+.75*unit(O-pI), pI+.75*unit(pS-pI));
  31. draw("$\alpha$", angle1, red);
  32. draw("$\gamma$", angle2, red);
  33. draw("$\beta$", angle3, red);
  34.  
  35. xaxis3(Label("$x$",1),blue,arrow=Arrow3);
  36. yaxis3(Label("$y$",1),blue,arrow=Arrow3);
  37. zaxis3(Label("$z$",1),blue,arrow=Arrow3);


Pourquoi l'axe des ordonnées n'apparait pas entièrement ?

Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

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

Re: [3D]L'axe des ordonnées est coupé

Message non lu par GM » mar. 29 janv. 2013, 20:28

Figure asymptote 0cd25c6fe9ea9504ad503d79b3a44a17
*** 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 graph3;
  2. size(8cm,0);
  3.  
  4. triple pA=(1,2,2), pB=(1,4,2), pC=(2,2,0);
  5.  
  6. draw(pA--pB--pC, linewidth(1pt)+red);
  7.  
  8. xaxis3(Label("$x$",1),blue,arrow=Arrow3);
  9. yaxis3(Label("$y$",1),blue,arrow=Arrow3);
  10. zaxis3(Label("$z$",1),blue,arrow=Arrow3);


Les limites des axes tiennent compte de la plus petite abscisse, de la plus petite ordonnée et de la plus petite cote...... des éléments en jeu dans la figure.

Je ne saurai dire... si c'est ainsi depuis longtemps.
Peut-être n'ai-je fait, jusqu'à présent, que des cas particuliers dans la galerie qui ne permettaient pas de le montrer............. ou peut-être y a t-il eu un changement qui nous a échappé : je n'ai pas le temps de chercher dans le changelog pour l'instant.

Pour avoir tes axes depuis le point (0,0,0), une façon de faire est celle-là :

Figure asymptote c2ccc0ff9437c30de7e4d6b8995b956c
*** 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 graph3;
  2. size(8cm,0);
  3.  
  4. triple pA=(1,2,2), pB=(1,4,2), pC=(2,2,0);
  5.  
  6. draw(pA--pB--pC, linewidth(1pt)+red);
  7.  
  8. xaxis3(Label("$x$",1),0,blue,arrow=Arrow3);
  9. yaxis3(Label("$y$",1),0,blue,arrow=Arrow3);
  10. zaxis3(Label("$z$",1),0,blue,arrow=Arrow3);
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: [3D]L'axe des ordonnées est coupé

Message non lu par GM » mar. 29 janv. 2013, 20:34

Pour ce qui est de la figure... essaie de compiler ceci... en augmentant le size (moi j'avais size(14cm))... et sans le render=0 du forum (ce que tu obtiendras devrait être mieux que ce que cela donne ci-dessous).

Figure asymptote 198d80fcf00aa051c4eb935c42cb888b
*** 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 solids;
  2. import geometry;
  3. size(300);
  4. currentprojection=orthographic(8,-5,8);
  5. currentlight=nolight;
  6. // Les mesures
  7. real yM=2, zM= 1.5, gamma = pi/3, petitaxe =.1, grandaxe=.2;
  8. // Ordonnée supposée du point de départ
  9. real yD=.5;
  10. // Les points et grandeurs qui s'en déduisent
  11. real alpha = asin(petitaxe/grandaxe),
  12. beta = atan((tan(alpha))/(sin(gamma))),
  13. Vy = yM-yD,
  14. Vx = Vy*tan(beta),
  15. Vz = Vy/tan(gamma);
  16. triple pM=(0,yM,zM), pD=(Vx,yM-Vy,zM-Vz),
  17. pA=(0,pD.y,pD.z), pB=(0,pM.y,pA.z);
  18. path ell1=ellipse((0,0),grandaxe/2,petitaxe/2,angle=gamma);
  19. path3 tache1=path3(ell1--(-grandaxe/2,0),YZplane);
  20. transform3 t=shift(pM)*rotate(90-gamma*180/pi,X)*shift(grandaxe/2*Y);
  21. draw(surface(t*path3(ell1,YZplane)),red);
  22. draw(t*tache1,dotted);
  23. draw("\scriptsize $\vec{V_x}$",pD--pA,Arrow3,align=W);
  24. draw(Label("\scriptsize $\vec{V_y}$",Relative(.4),align=N),pA--pB,Arrow3,align=N);
  25. draw("\scriptsize $\vec{V_z}$",pB--pM,Arrow3);
  26. draw(pA--pM^^pD--pB^^pA--pA+Z,dotted);
  27. draw(pM--pD,1bp+.8red);
  28. pen p2=1bp+blue+dotted;
  29. triple pA1=pA+.25*unit(pM-pA),
  30. pA2=rotate(gamma*180/pi,pA,pA+X)*pA1;
  31. triple pC=(0,pM.y,pD.z),
  32. pC1=pC-.5*Y,
  33. pC2=rotate(beta*180/pi,pC,pC+Z)*pC1;
  34. triple pM1=pM+.7*unit(pA-pM),
  35. pM2=rotate(alpha*180/pi,pM,pM+cross(pA-pM,pD-pM))*pM1;
  36. draw("$\gamma$",
  37. arc(pA,pA1,pA2,true),
  38. p2,
  39. Arrow3(DefaultHead2(normal=X),size=12bp));
  40. draw("$\beta$",
  41. arc(pC,pC1,pC2,true),
  42. p2,
  43. Arrow3(DefaultHead2(normal=Z),size=12bp));
  44. draw("$\alpha$",
  45. arc(pM,pM1,pM2,true),
  46. p2,
  47. Arrow3(DefaultHead2(normal=cross(pA-pM,pD-pM)),size=12bp));
  48. draw("$A$",pA,align=Z);
  49. draw("$B$",pB,align=Y);
  50. dot("$D$",pD,align=-Y);
  51. dot("$M$",pM,align=Z-Y);
  52. limits((0,0,0),(pD.x+.3,yM+.3,zM+1));
  53. xaxis3();
  54. yaxis3();
  55. zaxis3();
  56. limits((0,0,0),(1,1,1));
  57. xaxis3(Label("$\vec{i}$",Relative(.5)),1bp+.5green,Arrow3);
  58. yaxis3(Label("$\vec{j}$",Relative(.5)),1bp+.5green,Arrow3);
  59. zaxis3(Label("$\vec{k}$",Relative(.5)),1bp+.5green,Arrow3);
  60. draw(shift(pD+petitaxe/2*unit(cross(pM-pB,pD-pB)))*scale3(petitaxe/2)*unitsphere,opacity(.8)+red);
  61. triple centreboule=pD+petitaxe/2*unit(cross(pM-pB,pD-pB));
  62. draw("goutte de sang",centreboule--shift(.2*unit(pM-pD))*centreboule, Arrow3);


Je n'ai pas relu le code...... qui est ancien : il date de plusieurs années.
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: [3D]L'axe des ordonnées est coupé

Message non lu par GM » mar. 29 janv. 2013, 20:51

Autre suggestion pour le problème initial par l'utilisation d'un paramètre récent (extend=true) de la commande axes3 :

Figure asymptote 856867d627f57808930dd791c00b65af
*** 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 graph3;
  2. size(8cm,0);
  3.  
  4. triple pA=(1,2,2), pB=(1,4,2), pC=(2,2,0);
  5.  
  6. draw(pA--pB--pC, linewidth(1pt)+red);
  7.  
  8. axes3(Label("$x$",1),Label("$y$",1),Label("$y$",1),
  9. extend=true,
  10. blue,arrow=Arrow3);
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 !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: [3D]L'axe des ordonnées est coupé

Message non lu par maurice » mer. 30 janv. 2013, 01:12

GM a écrit :Les limites des axes tiennent compte de la plus petite abscisse, de la plus petite ordonnée et de la plus petite cote...... des éléments en jeu dans la figure.

Je ne saurai dire... si c'est ainsi depuis longtemps.


En tout cas, je n'avais jusqu'à présent jamais remarqué...
Merci pour la solution du problème...

... et en plus, tu apportes la figure complète avec la tâche de sang et tout et tout !
On a le beurre et l'argent du beurre !

Mille merci pour cette redoutable efficacité !

Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Répondre