Page 1 sur 1

Unitsize et picture

Posté : lun. 24 sept. 2012, 10:28
par cerise
Pour expliquer mon problème, je vais commencer par un exemple.
Mettons que j'aie un fichier, dans lequel je fixe une taille unité au moyen de unitsize, et dans lequel je déclare des objets de type picture, par exemple :

Code : Tout sélectionner

unitsize(1cm);

picture mon_joli_dessin;
unitsize(mon_joli_dessin,1cm);

Je suis obligée de mettre cette ligne unitsize(mon_joli_dessin,1cm); pour que mon_joli_dessin ait la taille que je veux, lorsque je le dessine via la commande add (avec une syntaxe du type add(mon_joli_dessin.fit(),(n,m)) pour le placer à la position (n,m)). Même si je veux que la picture ait la même longueur d'unité que celle définie pour le reste de mon document.

Là où le fait de devoir rajouter cette ligne m'embête beaucoup, c'est quand je veux définir des objets picture dans un fichier annexe, afin de pouvoir les utiliser dans plusieurs documents différents, avec éventuellement des unitsize différents.

Ma question est la suivante : peut-on faire en sorte que l'unité par défaut d'une picture soit la même que celle du reste du document ? Un moyen de faire ça serait de pouvoir récupérer l'unité "courante", est-ce possible ?

En espérant avoir été assez claire... Merci d'avance pour votre aide.

Re: Unitsize et picture

Posté : lun. 24 sept. 2012, 14:01
par GM
Si j'ai bien compris... ne suffit-il pas de ne pas donner d'unité à l'image ajoutée ?

Figure asymptote 370dccae8a35355eb4e3094b47821d1e
*** 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
  1. unitsize(1cm);
  2. draw(unitsquare);
  3.  
  4. picture pic;
  5. draw(pic,unitcircle);
  6.  
  7. add(pic);

Re: Unitsize et picture

Posté : lun. 24 sept. 2012, 14:38
par cerise
Cela ne fonctionne malheureusement pas dès que l'on veut ajouter la picture à une autre position que la position par défaut...

Re: Unitsize et picture

Posté : lun. 24 sept. 2012, 15:09
par GM
J'ai l'impression que l'on ne pourra pas faire beaucoup plus court que cela :

Figure asymptote bc889f1298046362ef7329be82994e3f
*** 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
  1. real u=1cm;
  2. unitsize(u);
  3. draw(unitsquare);
  4.  
  5. picture pic1; unitsize(pic1,u);
  6. draw(pic1,unitcircle);
  7.  
  8. picture pic2; unitsize(pic2,u);
  9. draw(pic2,(0,0)--(1,0)--(1,1)--cycle);
  10.  
  11. add(pic1.fit(),(3,2));
  12. add(pic2.fit(),(-2,0));


Ainsi le changement de u se répercute aux autres images.

Re: Unitsize et picture

Posté : lun. 24 sept. 2012, 15:28
par cerise
Merci pour ta réponse, et pour le temps que tu as passé à chercher une solution à mon problème !

J'avais pensé à cette solution, qui n'est pas idéale non plus lorsque on a plusieurs fichiers, un avec la définition des picture, et d'autres qui importent celui-ci. Mais je m'en contenterai, ou alors j'utiliserai la syntaxe :

Code : Tout sélectionner

add(shift((m,n))*mon_joli_dessin)