Page 1 sur 1

[Résolu] Picture et 3D

MessagePosté: Mardi 03 Février 2009, 17:59
par dmalik
Je cherche à dessiner plusieurs figures 3d avec le module slide.
Des constantes existent dans le dessin qui apparait sur chaque diapo.
J'ai bien vu l'exemple de l'intersection du cube de G. Marris.
J'essaye comme lui d'utiliser "picture" et ses différentes copies pour les compléter ou modifier.
Mais la philosophie du truc m'échappe !
Soit un exemple simple :

Code: Tout sélectionner
\documentclass{article}
\usepackage{asymptote}
\begin{document}
Debut de la figure\\
\begin{asy}
settings.prc=false;
import graph3;
currentprojection=orthographic(4,6,3);
//picture pic;
size(0,200);
size3(200,IgnoreAspect);
//real x(real t) {return cos(2pi*t);}
//real y(real t) {return sin(2pi*t);}
//real z(real t) {return t;}
//path3 p=graph(x,y,z,0,2.7,operator ..);
//draw(p,Arrow3);
scale(true);

xaxis3(XZ()*"$x$",Bounds(),red,InTicks(Label,2,2));
yaxis3(YZ()*"$y$",Bounds(),red,InTicks(beginlabel=false,Label,2,2));
zaxis3(XZ()*"$z$",Bounds(),red,InTicks);
//add(pic.fit(10cm));
\end{asy}
\\
fin de la figure
\end{document}


Il affiche bien un dessin mais pas tout !

Mais pas celui-ci

Code: Tout sélectionner
\documentclass{article}
\usepackage{asymptote}
\begin{document}
Debut de la figure \\
\begin{asy}
settings.prc=false;
import graph3;
currentprojection=orthographic(4,6,3);
picture pic;
size(pic,0,200);
size3(pic,200,IgnoreAspect);
//real x(real t) {return cos(2pi*t);}
//real y(real t) {return sin(2pi*t);}
//real z(real t) {return t;}
//path3 p=graph(x,y,z,0,2.7,operator ..);
//draw(p,Arrow3);
scale(true);

xaxis3(pic,XZ()*"$x$",Bounds(),red,InTicks(Label,2,2));
yaxis3(pic,YZ()*"$y$",Bounds(),red,InTicks(beginlabel=false,Label,2,2));
zaxis3(pic,XZ()*"$z$",Bounds(),red,InTicks);
add(pic.fit(10cm));
\end{asy}
\\
fin de la figure
\end{document}


Merci pour vos lumières !
Daniel

Re: Asymptote picture et 3D

MessagePosté: Mardi 03 Février 2009, 20:40
par OG
Bonsoir

Il faudrait un peu plus d'explications. Les deux exemples de code sont identiques et produisent un dessin 3D ne contenant que les axes (normal les autres commandes commencent par // donc commentaires) : est-ce cela que tu appelles "mais pas tout" ?

Cordialement,
O.G.

Re: Asymptote picture et 3D

MessagePosté: Mardi 03 Février 2009, 22:52
par dmalik
les // sont là pour en faire le moins possible pour un essai.

Chez moi il n'y a que le premier qui donne un dessin avec la commande :

Code: Tout sélectionner
pdflatex fichier
asy fichier
pdflatex fichier


sous ubuntu et asymptote 1.60
merci de ta réponse qui m'étonne

Daniel

Re: Asymptote picture et 3D

MessagePosté: Mardi 03 Février 2009, 23:48
par dmalik
j'ai simplifié mon exemple.asy. un fichier compilé par asy exemple.
Celui ci marche : il m'affiche le repère correctement

Code: Tout sélectionner
settings.outformat="pdf";
settings.prc=false;
import graph3;
size(12cm,0);
size3(12cm,IgnoreAspect);
currentprojection=orthographic(-10,-10,200);
limits((0,0,0),(10,10,300));
xaxis3(Label("$x$",position=MidPoint,align=SE),OutTicks(Step=2));
yaxis3(Label("$y$",position=MidPoint,align=SW),OutTicks(Step=2));
zaxis3(Label("$z$",position=EndPoint,align=3N+E),Bounds(Min,Max),InTicks(Step=100,Label(align=Y)));


Je cherche à mettre cette figure dans ma variable repere que j'appelle rep

Code: Tout sélectionner
settings.outformat="pdf";
settings.prc=false;
import graph3;

picture rep;
size(12cm,0);
size3(12cm,IgnoreAspect);

currentprojection=orthographic(-10,-10,200);
limits((0,0,0),(10,10,300));
xaxis3(rep,Label("$x$",position=MidPoint,align=SE),OutTicks(Step=2));
yaxis3(rep,Label("$y$",position=MidPoint,align=SW),OutTicks(Step=2));
zaxis3(rep,Label("$z$",position=EndPoint,align=3N+E),Bounds(Min,Max),InTicks(Step=100,Label(align=Y)));

add(rep.fit(12cm));


Ca ne marche pas ! je dépasse les bornes ! la réponse de asy est :

warning: x scaling in picture unbounded


merci
Daniel

Re: Asymptote picture et 3D

MessagePosté: Mercredi 04 Février 2009, 14:10
par OG
Bonjour

De rien pour la réponse qui étonne. Je n'avais pas vu ce add(fit());.

Je ne sais pas ce qui sera le plus rapide.

1) pour répéter un même code tu peux toujours définir une fonction qui contient ce code.
2) (j'avoue qu'il y a des subtilités asymptotiquement difficiles à comprendre pour moi, il doit y avoir une mise à l'échelle derrière tout cela et qui explique pourquoi rep.fit() ne marche pas)

Code: Tout sélectionner
limits(rep,(0,0,0),(10,10,300)); // pour spécifier les intervalles pour "picture rep"
add(rep); //oublie le rep.fit() !


a l'air de donner le résultat voulu.

J'espère que cela t'aidera.

O.G.

Re: [resolu] Asymptote picture et 3D

MessagePosté: Jeudi 05 Février 2009, 18:41
par dmalik
OK ca marche !
merci