Page 1 sur 1

Travailler dans plusieurs repères

Posté : sam. 13 mars 2010, 12:09
par GM
Un grand plus de l'extension geometry : pouvoir travailler facilement dans plusieurs repères (qui ne sont pas forcément affichés) !

Figure asymptote 3e5d88aea54eaa3694cb003214f4a5f2
*** 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 geometry;
  2. import graph_pi;
  3. size(300);
  4. graphicrules(xunit=1cm, yunit=1cm,
  5. xmin=-3, xmax=5,
  6. ymin=-3, ymax=7,
  7. crop=Crop
  8. );
  9. coordsys R=cartesiansystem((1.5,2.5),i=(1,-1),j=(2,.5));
  10. show("$O'$","$\vec{u}$","$\vec{v}$",R);
  11. // On définit la fonction et sa courbe (chemin)
  12. real f(real x) {return x^2;}
  13. path Cf=graph(f,n=400);
  14. // R* indique que Cf doit être tracée dans R
  15. draw(R*Cf,linewidth(1bp));
  16. draw(R*unitcircle,red);
  17. // On limite la taille de l'image :
  18. xlimits(-3,5,Crop);
  19. ylimits(-3,4,Crop);
  20. show(defaultcoordsys, xpen=blue);
  21.  

Re: Travailler dans plusieurs repères

Posté : sam. 13 mars 2010, 12:12
par pivaldi
Salut Gaétan !
Elle est vraiment extra cette extension :mrgreen:

Re: Travailler dans plusieurs repères

Posté : sam. 13 mars 2010, 12:28
par GM
pivaldi a écrit :Salut Gaétan !
Elle est vraiment extra cette extension :mrgreen:

Tu noteras que c'est celle qui a inauguré ce sous-forum : http://asy.gmaths.net/forum/extensions-existantes-f12/. C'est une V.I.E. d'un V.I.P. :mrgreen:

Une remarque technique sur l'exemple : j'ai ajouté l'affichage du repère par défaut en dernière ligne après xlimits et ylimits pour ne pas avoir ce qu'il se passe ici : la disparition de l'axe des abscisses.

Re: Travailler dans plusieurs repères

Posté : sam. 13 mars 2010, 16:34
par pivaldi
GM a écrit :
pivaldi a écrit :Une remarque technique sur l'exemple : j'ai ajouté l'affichage du repère par défaut en dernière ligne après xlimits et ylimits pour ne pas avoir ce qu'il se passe ici : la disparition de l'axe des abscisses.


La, ce n'est pas de ma faute ;)
Comme il y a du deferred-drawing derrière, c'est le crop qui m'empêche d'avoir la longueur de l'axe.
Pour palier ce problème, il suffit de mettre un dot((0,-epsilon),invisible); dans le code.

En revanche j'ai profité de ta remarque pour améliorer la gestion de xylimits car il était redondant de mettre

Code : Tout sélectionner

graphicrules(xunit=1cm, yunit=1cm,
             xmin=-3, xmax=3,
             ymin=-3, ymax=7,
             crop=Crop
             );

suivi d'un

Code : Tout sélectionner

xlimits(-2,3,Crop);
ylimits(-2,5,Crop);


Avec la nouvelle version, il suffit de mettre

Code : Tout sélectionner

graphicrules(xunit=1cm, yunit=1cm,
             xmin=-2, xmax=3,
             ymin=-2, ymax=5,
             crop=Crop
             );

plus besoin de remettre un xylimits (sauf cas spéciaux).

Tu peux donc remplacer avantageusement ton code par

Code : Tout sélectionner

import geometry;
import graph_pi;
size(7cm,0);
graphicrules(xunit=1cm, yunit=1cm,
             xmin=-2, xmax=3,
             ymin=-2, ymax=5,
             crop=Crop
             );
show(defaultcoordsys);
coordsys R=cartesiansystem((2,1),i=(1,1),j=(-1,1));
show("$O'$","$\vec{u}$","$\vec{v}$",R);
// On définit la fonction et sa courbe (chemin)
real f(real x) {return x^2;}
path Cf=graph(f,n=400);
// R* indique Cf doit être tracée dans R
draw(R*Cf,linewidth(1bp));
dot((0,-.1),invisible); // Hack pour avoir l'axe !


Voilà, j'espère que cette nouvelle version de graph_pi ne va pas entrainer de régressions car j'ai ajouté un bien gros hack dedans… et que je n'ai pas le temps de la tester dans ces moindres recoins.

Re: Travailler dans plusieurs repères

Posté : sam. 13 mars 2010, 17:01
par GM
Je testerai tout cela. Merci :-)