Ecrire un macro de dessin

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Alfred
Messages : 7
Enregistré le : lun. 14 mai 2018, 15:57

Ecrire un macro de dessin

Message non lu par Alfred » lun. 17 juin 2019, 15:48

Bonjour,
ayant eu l'occasion d'écrire quelques macros d'évaluation de fonctions, je m'attaque maintenant aux macros de dessin. J'ai choisi un exemple simple pour le principe, qui peut certainement être contourné, mais ce n'est pas le but. L'exemple ci-dessous plante et j'aimerais comprendre le pourquoi. Merci de votre aide.

Code : Tout sélectionner

settings.outformat="pdf";
settings.render=0;
unitsize(1cm);

pen p1=linewidth(0.1mm);
//début macro
void parallelogramme(pair O=(0,0), pair u, pair v, pen p=currentpen)
{pair A=O, B=A+u, C=B+v, D=C-u;
draw(A--B--C--D--cycle,p);}
//fin macro

draw((0,5)--(8,8),p1);
//essai infructueux (erreurs)
parallelogramme((1,4),(2,5),p1);

shipout(bbox(5mm, invisible));
Alfred

PC Windows 10, MiKTeX 2.9, TeXMaker 5

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Ecrire un macro de dessin

Message non lu par OG » lun. 17 juin 2019, 16:00

Bonjour

Visiblement Asymptote ne comprend pas que tu n'envoies que `u` et `v`.
En mettant

Code : Tout sélectionner

parallelogramme(u=(1,4),v=(2,5),p1);
cela fonctionne. Cela vient du fait que les 3 premières entrées sont du même type, il y a ambiguïté.
En changeant l'ordre

Code : Tout sélectionner

pair u, pair v, pen p=currentpen, pair O=(0,0)
sans spécifier `u=...`, cela fonctionne.

O.G.

Alfred
Messages : 7
Enregistré le : lun. 14 mai 2018, 15:57

Re: Ecrire un macro de dessin

Message non lu par Alfred » mer. 26 juin 2019, 14:28

Merci,
Donc, si j'ai bien compris, l'ordre des variables locales doit être le suivant:
en premier celles qui ne possèdent pas de valeur par défaut;
en dernier celles à qui on assigne une valeur par défaut.
Cela sous-entend que toutes les variables intermédiaires créées à l'intérieur de la macro, soit entre les accolades, sont locales.

Quelqu'un peut-il affirmer ou infirmer cette assertion ? merci
Alfred

PC Windows 10, MiKTeX 2.9, TeXMaker 5

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Ecrire un macro de dessin

Message non lu par OG » mer. 26 juin 2019, 14:43

Bonjour

Ce n'est pas ce que j'ai voulu dire.
Là le souci est (je pense) qu'il y a ambiguïté car les trois variables (dont une définie par défaut) sont du même type.

Répondre