Passation de paramètre

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.
Zaf11000

Passation de paramètre

Message non lu par Zaf11000 »

Bonjour à tous,
je voudrais créer une procédure monrepereamoi(??? thesize, int xmin, int xmax, int ymin, int ymax).
Je n'arrive pas à déterminer le type du paramètre thesize pour que dans ma procédure monrepereamoi je puis faire passer ce paramètre thesize à la procédure size d'Asymptote.
Merci pour votre aide.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote passation de paramètre

Message non lu par OG »

real

O.G.
Zaf11000

Re: Asymptote passation de paramètre

Message non lu par Zaf11000 »

Bonjour Olivier,
J'ai pris le type real et j'ai le message :
no matching variable 'thesize'.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

Zaf11000 a écrit :je voudrais créer une procédure monrepereamoi(??? thesize, int xmin, int xmax, int ymin, int ymax).
Je rappelle qu'il y a l'extension graph fournie avec asymptote qui fournit notamment xaxis et yaxis...

... mais ne pas oublier l'extension graph_pi de Philippe, dont voici un exemple d'utilisation : il y a notamment défini trois fonctions : graphicsrules, grid et cartesianaxis.

Code : Tout sélectionner

graphicrules(picture pic=currentpicture, real unit=1cm,
                  real xunit=unit != 0 ? unit : 0,
                  real yunit=unit != 0 ? unit : 0,
                  real xmin=-infinity, real xmax=infinity, real ymin=-infinity, real ymax=infinity,
                  bool crop=NoCrop, bool xcrop=crop, bool ycrop=crop)

Code : Tout sélectionner

grid(picture pic=currentpicture,
          real xmin=pic.userMin.x, real xmax=pic.userMax.x,
          real ymin=pic.userMin.y, real ymax=pic.userMax.y,
          real xStep=1, real xstep=.5,
          real yStep=1, real ystep=.5,
          pen pTick=nullpen, pen ptick=grey, bool above=false)

Code : Tout sélectionner

cartesianaxis(picture pic=currentpicture,
                   Label Lx=Label("$x$",align=2S),
                   Label Ly=Label("$y$",align=2W),
                   real xmin=-infinity, real xmax=infinity,
                   real ymin=-infinity, real ymax=infinity,
                   real extrawidth=1, real extraheight=extrawidth,
                   pen p=currentpen,
                   ticks xticks=Ticks("%",pTick=nullpen, ptick=grey),
                   ticks yticks=Ticks("%",pTick=nullpen, ptick=grey),
                   bool viewxaxis=true,
                   bool viewyaxis=true,
                   bool above=true,
                   arrowbar arrow=Arrow)
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

Zaf11000 a écrit :Bonjour Olivier,
J'ai pris le type real et j'ai le message :
no matching variable 'thesize'.
Sans le code complet de ce que tu as écrit... difficile de dire.

Peut-être une source d'inspiration (qui ne provoque pas d'erreur) :

Code : Tout sélectionner

void monrepereamoi(real thesize=1, int xmin, int xmax, int ymin, int ymax){
  draw((xmin,ymin)--(xmax,ymax)); // tracé d'un trait sur l'image produite
  write("ok");                   // écriture de "ok" en console
}
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
///// Test :
monrepereamoi(xmin=0,ymin=0,xmax=100,ymax=100);

Code : Tout sélectionner

... =1
C'est pour donner une valeur par défaut à thesize... te permettant ainsi de ne pas lui donner de valeur lors de l'appel de la fonction (procédure).


NB : j'ai gardé ton nom "monrepereamoi"... mais j'ai mis un truc bidon dans la fonction, qui n'a rien à voir avec le sujet.
Zaf11000

Re: Asymptote passation de paramètre

Message non lu par Zaf11000 »

Bonjour Gaëtan et merci pour ta solution proposée,
Est-ce que je suis obligé de passer les paramètres en écrivant monrepereamoi(xmin=10, xmax=20... ) ou bien simplement monrepereamoi(10, 20,... ) ?
Moi je voudrais passer comme valeur dans thesize la valeur en cm ou en mm que l'on passe habituellement dans size().
Quant aux procédures que tu me cites plus haut, je vais les regarder de près en faisant quelques tests.
Merci.
Zaf11000

Re: Asymptote passation de paramètre

Message non lu par Zaf11000 »

En compilant un exemple cité au dessus j'ai ce message d'erreur :
latex.exe: Couldn't connect to server
C:\Program Files\Asymptote/graph.asy: 1595.5: runtime: ======================================================================

! LaTeX Error: File `icomma.sty' not found.
Il doit me manquer des packages non ?
Où les télécharger ?
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

Zaf11000 a écrit :! LaTeX Error: File `icomma.sty' not found.
Il doit me manquer des packages non ?
Où les télécharger ?
MikTeX ne t'a pas proposé (à la volée) d'installer was dont fait partie icomma ?
Dans le menu Démarrer/MikTeX 2.8/Maintenance (admin)/Package Manager (admin)... fais une recherche sur : was
pour voir s'il est installé ou pas.


De toute façon... même si tu arrives à installer was qui installera icomma.sty, tu n'auras plus le message d'erreur

mais je ne suis pas sûr que tu auras l'effet escompté : le package icomma est (de mémoire donc à verifier !!!!)
censé agir pour le remplacement du point par la virgule dans les nombres et sur l'espace après la virgule...

... mais j'ai le souvenir que si cela fonctionnait sur mon serveur linux, il y avait des problèmes sous windows (du moins sur ma config)
même en rajoutant locale("it_IT"); qui était préconisé par JCBowman.

Code : Tout sélectionner

usepackage("icomma");
locale("it_IT");
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

GMaths a écrit :... mais j'ai le souvenir que si cela fonctionnait sur mon serveur linux, il y avait des problèmes sous windows (du moins sur ma config)
même en rajoutant locale("it_IT"); qui était préconisé par JCBowman.

Code : Tout sélectionner

usepackage("icomma");
locale("it_IT");
après une petite recherche, je réalise que j'avais même signalé le problème dans un exemple.

Peut-être qu'un autre utilisateur d'Asymptote sous windows pourra nous dire s'il est capable d'avoir des décimaux écrit avec une virgule (et non un point) pour les valeurs associées aux graduations d'un axe... par exemple pour l'exemple suivant :

Code : Tout sélectionner

usepackage("icomma");
locale("it_IT");

size(8cm,5cm,IgnoreAspect);
import graph;

xaxis(xmin=-1,xmax=1,Ticks(Step=.4));
yaxis(ymin=0,ymax=1,Ticks(NoZero,Step=.25));
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

Apparemment, icomma ne fait pas ce que je croyais...

On utilisera alors siunitx et sa commande \num{...} :

Code : Tout sélectionner

usepackage("siunitx", "locale=DE");

size(8cm,5cm,IgnoreAspect);
import graph;

xaxis(xmin=-1,xmax=1,Ticks(Label("\num{%.2f}"),Step=.4));
yaxis(ymin=0,ymax=1,Ticks(Label("\num{%.2f}"),NoZero,Step=.25));
Zaf11000

Re: Asymptote passation de paramètre

Message non lu par Zaf11000 »

Voici ce que j'obtiens :
latex.exe: Couldn't connect to server
C:\Program Files\Asymptote/graph.asy: 1240.17: runtime: ======================================================================

! LaTeX Error: File `siunitx.sty' not found.
il manque peut-être siunitx.sty ?
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote passation de paramètre

Message non lu par GMaths »

GMaths a écrit :Dans le menu Démarrer/MikTeX 2.8/Maintenance (admin)/Package Manager (admin)... fais une recherche sur : was
et maintenant une sur siunitx...

S'il n'est pas installé, installe le ;-).
miktex_package_manager.png
Zaf11000

Re: Asymptote passation de paramètre

Message non lu par Zaf11000 »

A plusieurs reprises j'ai eu le message :
Couldn't connect to server
J'attends un peu et je recommencerai un peu plus tard.
Merci.
Répondre