Picture et 3D

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
dmalik

[Résolu] Picture et 3D

Message non lu 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
Dernière modification par dmalik le jeudi 05 février 2009, 18:41, modifié 2 fois.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote picture et 3D

Message non lu 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.
dmalik

Re: Asymptote picture et 3D

Message non lu 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
dmalik

Re: Asymptote picture et 3D

Message non lu 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
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote picture et 3D

Message non lu 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.
dmalik

Re: [resolu] Asymptote picture et 3D

Message non lu par dmalik »

OK ca marche !
merci
Répondre