Page 1 sur 1

[Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Lundi 10 Octobre 2011, 14:36
par evariste_G
Bonjour.
J'ai décidé de me mettre à Asymptote car pour dessiner des surfaces, ça m'avait l'air intéressant.
Cependant, je n'arrive pas à comprendre comment je pourrais, sur l'exemple suivant, placer les grilles derrière la surface dessinée.
De plus, les lignes de niveaux ne se dessinent pas et je ne vois pas pourquoi ...

Code: Tout sélectionner
\documentclass[12pt]{article}
% Base
\usepackage{etex}
\usepackage[frenchb]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{asymptote}
\begin{document}
\begin{asy}
import graph3;
import contour;
import grid3;
import palette;

size(8cm,IgnoreAspect);

currentprojection=orthographic(-10,-10,8);
limits((0,0,0),(120,100,160));

real f(pair z) {return sqrt(2*z.x*z.y);}

real[] lignesniveaux={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150};

surface s=surface(f,(0,0),(120,100),50,Spline);

draw(s,mean(palette(s.map(zpart),Rainbow())),black);

grid3(XYZgrid,Step=20);

xaxis3(Label("$x$",position=MidPoint,align=SE),
       Bounds(Min,Min),
       OutTicks(Step=20));
yaxis3(Label("$y$",position=MidPoint,align=SW),
       Bounds(Min,Min),
       OutTicks(Step=20));
zaxis3(Bounds(Max,Both),OutTicks(Step=20));
zaxis3(Label("$z$",position=EndPoint,align=N+W),
       XYEquals(0,100),
       InTicks(beginlabel=false,endlabel=false,Label(align=Y))
       );
draw(lift(f,contour(f,(0,0),(120,100),lignesniveaux)),1bp+red);
\end{asy}
\end{document}


surface.jpg

Re: Placement de grilles et lignes de niveaux

MessagePosté: Lundi 10 Octobre 2011, 17:26
par GMaths
Bonjour

Avec ton instruction de grid3, les grilles sont tracées dans les plans d'équation x=0, y=0 et z=0 par défaut.
Et compte tenu de ton angle de vue... les plans x=0 et y=0 sont au premier plan.

Il faut procéder à un réglage particulier de chaque grille :

Code: Tout sélectionner
grid3(gridroutine=XYXgrid(),Step=20);
grid3(gridroutine=XZXgrid(pos=Relative(1)),Step=20,step=10);
grid3(gridroutine=YZYgrid(pos=Relative(1)),Step=20,step=5);


... ou créer une nouvelle commande pour le faire automatiquement... suivant les valeurs passées pour currentprojection.

---------------

Tu demandes beaucoup, beaucoup de lignes de niveau : cela doit ramer.

Si tu en demandes beaucoup moins, tu ne les vois pas apparaitre ?

Re: Placement de grilles et lignes de niveaux

MessagePosté: Lundi 10 Octobre 2011, 19:57
par evariste_G
Merci. Cela fonctionne comme ça.
Il est vrai que la compilation prenait bien longtemps, et je ne comprenais pas ... Maintenant, je comprends.

Re: Placement de grilles et lignes de niveaux

MessagePosté: Mercredi 12 Octobre 2011, 17:34
par GMaths
evariste_G a écrit:Merci. Cela fonctionne comme ça.
Il est vrai que la compilation prenait bien longtemps, et je ne comprenais pas ... Maintenant, je comprends.


Avec une sortie prc... chaque ligne de niveau à laquelle on donne une épaisseur est un tube pour lequel il y a prise en compte de l'éclairage.

Avec le code suivant :

Code: Tout sélectionner
import graph3;
import contour;
import grid3;
import palette;
size(8cm,IgnoreAspect);
currentprojection=orthographic(-10,-10,8);
limits((0,0,0),(120,100,160));
real f(pair z) {return sqrt(2*z.x*z.y);}
real[] lignesniveaux={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150};
surface s=surface(f,(0,0),(120,100),50,Spline);
draw(s,mean(palette(s.map(zpart),Rainbow())),gray,nolight);
grid3(gridroutine=XYXgrid(),Step=20,step=10);
grid3(gridroutine=XZXgrid(pos=Relative(1)),Step=20,step=10);
grid3(gridroutine=YZYgrid(pos=Relative(1)),Step=20,step=5);
xaxis3(Label("$x$",position=MidPoint,align=SE),
           Bounds(Min,Min),
           OutTicks(Step=20));
yaxis3(Label("$y$",position=MidPoint,align=SW),
          Bounds(Min,Min),
           OutTicks(Step=20));
zaxis3(Bounds(Max,Both),OutTicks(Step=20));
zaxis3(Label("$z$",position=EndPoint),
           zmax=179,
           XYEquals(0,100),
           InTicks(Step=20,beginlabel=false,Label(align=Y)),
           Arrow3());
draw(lift(f,contour(f,(0,0),(120,100),lignesniveaux)),.5bp+.5red);


et une compilation avec les options -f pdf -tex pdflatex -render=0 -noprc
j'obtiens ceci en 10 secondes :

2011-10-12_183242.png


A noter... que j'ai mis un "nolight" pour la surface.

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Mercredi 12 Octobre 2011, 19:42
par evariste_G
Quand tu parles de compilation, tu parles que laquelle ?
Comme je n'ai jamais compilé de fichier avec codes Asymptote, utilisant Texmaker, j'utilise la compilation LaTeX+Asymptote+LaTeX+dvips, donc où mettre ces options ?

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Jeudi 13 Octobre 2011, 20:10
par GMaths
evariste_G a écrit:Quand tu parles de compilation, tu parles que laquelle ?
Comme je n'ai jamais compilé de fichier avec codes Asymptote, utilisant Texmaker, j'utilise la compilation LaTeX+Asymptote+LaTeX+dvips, donc où mettre ces options ?


J'ai compilé directement le asy avec ce qui est pour moi l'éditeur incontournable sous windows : notepad++

2011-10-13_210731.png


Je n'ai pas re-testé avec ton tex initial.

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Vendredi 14 Octobre 2011, 11:44
par evariste_G
Je ne sais pas quelle version tu as de Notepad+, mais chez moi, ça ne fonctionne pas ... Mais c'est pas bien grave, ce n'est pas l'objet du topic.
Chez moi, quand je clique sur "Exécuter", il y a juste une ligne dans laquelle mettre la commande (donc là, je choisis le chemin de asy.exe et je mets les options), mais c'est tout ... Je n'ai pas le "asy_pdf" en bas à droite.

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Vendredi 14 Octobre 2011, 17:56
par GMaths
evariste_G a écrit:Je ne sais pas quelle version tu as de Notepad+, mais chez moi, ça ne fonctionne pas ... Mais c'est pas bien grave, ce n'est pas l'objet du topic.
Chez moi, quand je clique sur "Exécuter", il y a juste une ligne dans laquelle mettre la commande (donc là, je choisis le chemin de asy.exe et je mets les options), mais c'est tout ... Je n'ai pas le "asy_pdf" en bas à droite.


Tu vas dans le menu "Compléments" / "Plugin Manager" / "Show Plugin Manager" ... et tu installes NppExec.
Tu auras la fenêtre que tu vois sur l'image....... avec la possibilité de créer des profils de compilation (en cliquant sur Save).................... en appuyant sur F6.

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Samedi 15 Octobre 2011, 11:48
par evariste_G
Merci beaucoup ! J'étais loin de me rendre compte des possibilités de cet éditeur, que j'utilisais habituellement pour mes pages PHP ...
Et en effet, c'est bien plus rapide !

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Samedi 15 Octobre 2011, 12:55
par GMaths
evariste_G a écrit:Merci beaucoup ! J'étais loin de me rendre compte des possibilités de cet éditeur

Pense à jeter un oeil sur les options de NppExec :
(sauvegarde automatique des fichiers avant compilation, raccourci pour le dernier mode de compilation, console permanente pour taper des commandes, etc...)

2011-10-15_134853.png

Tu peux créer bien sûr créer aussi des profils de compilation pour latex et tout autre langage.

2011-10-15_135332.png


Pour la coloration syntaxique du code Asymptote, j'ai déposé le fichier utile dans un ancien sujet.

Re: [Résolu] Placement de grilles et lignes de niveaux

MessagePosté: Samedi 15 Octobre 2011, 12:59
par GMaths
L'option
Code: Tout sélectionner
Follow $(CURRENT_DIRECTORY)
doit te permettre de ne pas avoir à écrire, dans chaque mode de compilation, ce que tu vois sur l'image :
Code: Tout sélectionner
cd $(CURRENT_DIRECTORY)
.

Si tu as les chemins nécessaire dans le path de Windows... il suffit de taper asy suivi des options.