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 :
*** 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
import graph_pi;
real xmin=2, xmax=3,
ymin=-1.5, ymax=1.5,
margeX=.1, margeY=margeX;
graphicrules(xunit=10cm, yunit=1cm,
xmin=xmin-margeX, xmax=xmax+margeX,
ymin=ymin-margeY, ymax=ymax+margeY,
xcrop=true);
add(millimeterpaper(xmin=xmin, xmax=xmax,
ymin=ymin, ymax=ymax,
p=1bp+orange),
(0,0));
cartesianaxis(Lx=Label("$x$",align=2N),
xmin=xmin-margeX, xmax=xmax+margeX,
extrawidth=0,
xticks=Ticks(Step=.5, step=.1),
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 :
*** 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
import graph_pi;
real xmin=2, xmax=3,
ymin=-1.5, ymax=1.5,
margeX=.1, margeY=margeX;
graphicrules(xunit=10cm, yunit=1cm,
xmin=xmin-margeX, xmax=xmax+margeX,
ymin=ymin-margeY, ymax=ymax+margeY,
xcrop=true);
add(millimeterpaper(p=1bp+orange),(0,0));
cartesianaxis(Lx=Label("$x$",align=2N),
extrawidth=0,
xticks=Ticks(Step=.5, step=.1),
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.
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!!!