Page 1 sur 1

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

Posté : mar. 29 janv. 2013, 18:05
par maurice
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

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

Posté : mar. 29 janv. 2013, 20:28
par GM

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);

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

Posté : mar. 29 janv. 2013, 20:34
par GM
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.

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

Posté : mar. 29 janv. 2013, 20:51
par GM
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);

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

Posté : mer. 30 janv. 2013, 01:12
par maurice
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