Je voulais reproduire le graphe du sujet TES d'Asie :
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- size(300);
- real marge=0.2;
- object objet_1=draw("1", box, (0,0), marge),
- objet_2=draw("2", box, (1,0), marge),
- objet_3=draw("3", box, (2,0), marge),
- objet_4=draw("4", box, (3,0), marge);
- add(new void(picture pic, transform t) {
- draw(pic, Label("S",align=N), point(objet_1,E,t){N+2*E}..{S+2*E}point(objet_2,W,t),Arrow);
- draw(pic, Label("U", align=S), point(objet_2,W,t){S+2*W}..{N+2*W}point(objet_1,E,t), Arrow);
- draw(pic, Label("P", align=N), point(objet_2,2*W+N,t){N+2*W}..{S+2*W}point(objet_2,2*E+N,t), Arrow);
- draw(pic, Label("C", align=S), point(objet_2,2*W+S,t){S+2*W}..{N+2*W}point(objet_2,2*E+S,t), Arrow);
- draw(pic, Label("E", align=N), point(objet_2,E,t)--point(objet_3,W,t), Arrow);
- draw(pic, Label("N", align=N), point(objet_3,2*W+N,t){N+2*W}..{S+2*W}point(objet_3,2*E+N,t), Arrow);
- draw(pic, Label("E", align=N), point(objet_3,E,t)--point(objet_4,W,t), Arrow);
- });
Pour être conforme à l'original, je souhaitais que les boites qui encadrent les numéros subissent une rotation de 45 degrés.
Or, dans l'index des fonctions asymptote, lorsque l'on recherche draw avec comme filtre object (pour type) et pair (comme argument) on tombe sur :
Code : Tout sélectionner
(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
qui laisse à penser que box est du type path.
Si dans le code, j'ajoute :
Code : Tout sélectionner
transform r=rotate(45, (0,0));
path boite=r*box((0,0),(1,1));
et remplace box par boite j'obtiens le message d'erreur :
Code : Tout sélectionner
Asie-2013-graphe.asy: 6.20: no matching function 'draw(string, path, pair, real)'
Si je remplace box par rota(45)*box, j'obtiens le message d'erreur :
Code : Tout sélectionner
Asie-2013-graphe.asy: 6.36: no matching function 'operator *(transform, <overloaded>)'
Asie-2013-graphe.asy: 6.37: use of variable 'box' is ambiguous
Je suis à court d'idées.
Bruno