Page 1 sur 1

papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 10:26
par beata
Bonjour,
je voudrais tracer un axe gradué avec un axe gradué dessus. Jusque là j'y arrive..
Le problème c'est que je veux que mon axe commence à 2 et finisse à 3!!
Et là, problème...

Code : Tout sélectionner

import graph_pi;
pen bpd=bp+brown+linetype("4 4");
graphicrules(xunit=10cm, yunit=1cm, xmin=1.8, xmax=3.2, ymin=-1.17, ymax=1.17);
add(millimeterpaper(p=1bp+orange),(0,0));
cartesianaxis(Lx=Label("$x$",align=2N),extrawidth=0,
              xticks=Ticks(),viewyaxis=false );


Merci pour votre aide

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 14:02
par GM
Bonjour,

quelque chose comme cela peut-être :

Figure asymptote 14320c1ad6630cdd3f2de731d4fac6ca
*** 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 graph_pi;
  2. real xmin=2, xmax=3,
  3. ymin=-1.5, ymax=1.5,
  4. margeX=.1, margeY=margeX;
  5. graphicrules(xunit=10cm, yunit=1cm,
  6. xmin=xmin-margeX, xmax=xmax+margeX,
  7. ymin=ymin-margeY, ymax=ymax+margeY,
  8. xcrop=true);
  9. add(millimeterpaper(xmin=xmin, xmax=xmax,
  10. ymin=ymin, ymax=ymax,
  11. p=1bp+orange),
  12. (0,0));
  13. cartesianaxis(Lx=Label("$x$",align=2N),
  14. xmin=xmin-margeX, xmax=xmax+margeX,
  15. extrawidth=0,
  16. xticks=Ticks(Step=.5, step=.1),
  17. viewyaxis=false );

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 14:21
par GM
GM a écrit :quelque chose comme cela peut-être

Après coup... ce n'est pas encore parfait... et je me demande s'il n'y a pas un problème avec la fonction millimeterpaper de Philippe.
Pas le temps de faire mieux pour l'instant : je dois m'absenter.

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 15:10
par beata
C'est tout à fait ce qu'il me faut!!
Merci beaucoup!!
Il me reste encore beaucoup à apprendre...

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 16:45
par GM
beata a écrit :C'est tout à fait ce qu'il me faut!!
Merci beaucoup!!
Il me reste encore beaucoup à apprendre...


S'il est suffisant, pour le même dessin, alors le code peut être réduit à cela :

Figure asymptote 518927560bf5debf670ba2d7b79bce9c
*** 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 graph_pi;
  2. real xmin=2, xmax=3,
  3. ymin=-1.5, ymax=1.5,
  4. margeX=.1, margeY=margeX;
  5. graphicrules(xunit=10cm, yunit=1cm,
  6. xmin=xmin-margeX, xmax=xmax+margeX,
  7. ymin=ymin-margeY, ymax=ymax+margeY,
  8. xcrop=true);
  9. add(millimeterpaper(p=1bp+orange),(0,0));
  10. cartesianaxis(Lx=Label("$x$",align=2N),
  11. extrawidth=0,
  12. xticks=Ticks(Step=.5, step=.1),
  13. viewyaxis=false );


Mais ce n'est pas ce que je voulais faire moi... et les valeurs xmin, xmax,... passées à millimeterpaper dans ma première proposition ne sont pas prises en compte, donc il me semble qu'il y a un problème avec millimeterpaper.

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 16:51
par GM
GM a écrit :Mais ce n'est pas ce que je voulais faire moi... et les valeurs xmin, xmax,... passées à millimeterpaper dans ma première proposition ne sont pas prises en compte, donc il me semble qu'il y a un problème avec millimeterpaper.

D'ailleurs cela me semble confirmé dans l'un des exemples de Philippe : http://www.piprime.fr/906/graph_pi_asy-fig0050/.

Je vais attirer son attention sur cette discussion par mail.

Re: papier millimétré et axes gradués

Posté : sam. 5 mai 2012, 21:49
par GM
GM a écrit :
GM a écrit :Mais ce n'est pas ce que je voulais faire moi... et les valeurs xmin, xmax,... passées à millimeterpaper dans ma première proposition ne sont pas prises en compte, donc il me semble qu'il y a un problème avec millimeterpaper.

D'ailleurs cela me semble confirmé dans l'un des exemples de Philippe : http://www.piprime.fr/906/graph_pi_asy-fig0050/.

Je vais attirer son attention sur cette discussion par mail.

C'est fait... et en attendant sa réponse, j'ai jeté un oeil à la définition de millimeterpaper dans graph_pi.

Code : Tout sélectionner

picture millimeterpaper(picture pic=currentpicture, pair O=(0,0),
                        real xmin=infinity, real xmax=infinity,
                        real ymin=infinity, real ymax=infinity,
                        pen p=.5bp+orange)
{
  picture opic;
  real
    cofx=pic.xunitsize/cm,
    cofy=pic.yunitsize/cm;
  write(cofx,cofy);
  real
    xmin= (xmin <= infinity) ? pic.userMin().x*cofx : xmin*cofx,
    xmax= (xmax <= infinity) ? pic.userMax().x*cofx : xmax*cofx,
    ymin= (ymin <= infinity) ? pic.userMin().y*cofy : ymin*cofy,
    ymax= (ymax <= infinity) ? pic.userMax().y*cofy : ymax*cofy;
  write(xmin,xmax,ymin,ymax);
  path
    ph=(xmin*cm,0)--(xmax*cm,0),
    pv=(0,ymin*cm)--(0,ymax*cm);
  real [] step={5, 1, .5, .1};
  pen [] p_={ p, scale(.7)*p, scale(.4)*p, scale(.2)*p};

  for (int j=0; j<4; ++j)
    {
      for (real i=O.y; i<= ymax; i+=step[j])
        draw(opic, shift(0,i*cm)*ph, p_[j]);
      for (real i=O.y; i>=ymin ; i-=step[j])
        draw(opic, shift(0,i*cm)*ph, p_[j]);
      for (real i=O.x; i<=xmax; i+=step[j])
        draw(opic, shift(i*cm,0)*pv, p_[j]);
      for (real i=O.x; i>=xmin; i-=step[j])
        draw(opic, shift(i*cm,0)*pv, p_[j]);
    }

  return opic;
}

Les lignes suivantes me laissent perplexe... et je ne suis plus étonné que xmin, xmax, ymin, ymax semblent inefficaces car je ne vois pas trop comment un test tel que (xmin <= infinity) pourrait être autre chose que true.

Code : Tout sélectionner

  real
    xmin= (xmin <= infinity) ? pic.userMin().x*cofx : xmin*cofx,
    xmax= (xmax <= infinity) ? pic.userMax().x*cofx : xmax*cofx,
    ymin= (ymin <= infinity) ? pic.userMin().y*cofy : ymin*cofy,
    ymax= (ymax <= infinity) ? pic.userMax().y*cofy : ymax*cofy;

Re: papier millimétré et axes gradués

Posté : dim. 6 mai 2012, 00:13
par pivaldi
Merci Gaétan !

J'ai corrigé graph_pi dans le dépôt git.
Content de voir que ce module Asymptote sert encore un peu :)

Re: papier millimétré et axes gradués

Posté : dim. 6 mai 2012, 09:36
par GM
pivaldi a écrit :Merci Gaétan !

Je n'ai pas encore regardé ce que tu as modifié.... mais par anticipation, merci à toi, Philippe.

pivaldi a écrit :J'ai corrigé graph_pi dans le dépôt git.

Je vais mettre à jour ma version et celle du forum.

Re: papier millimétré et axes gradués

Posté : lun. 7 mai 2012, 10:28
par beata
Tout ça est un peu trop "technique" pour moi...
Je vais m'y mettre et regarder tout ça de plus près, es espérant y comprendre quelque chose.
En tout cas un grand merci à vous!!!