size et unitsize

La documentation donne :

To make the user coordinates of picture pic represent multiples of x units in the x direction and y units in the y direction, use

void unitsize(picture pic=currentpicture, real x, real y=x);

When nonzero, these x and y values override the corresponding size parameters of picture pic.

L’image suivante :

peut être envisagée de deux manières différentes en ce qui concerne l’écriture des coordonnées des points. Le code de cette image est le suivant :

<partie variable du code>
pair A, B, C, D;
A=(0,0);
B=(2,0);
C=(4,0);
D=(4,2);
draw (A--B);
draw (C--D);

Soit on utilise les unités directement dans les coordonnées (en ne donnant aucune contrainte sur les paramètres de size ) :

size(0,0);
pair A, B, C, D;
A=(0,0);
B=(2cm,0);
C=(4cm,0);
D=(4cm,2cm);
draw (A--B);
draw (C--D);

Soit on définit au préalable l’unité qui sera implicitement utilisée dans les coordonnées via unitsize :

unitsize(1cm);
pair A, B, C,D;
A=(0,0);
B=(2,0);
C=(4,0);
D=(4,2);
draw (A--B);
draw (C--D);

On peut donner deux “unités” différentes en première coordonnée et deuxième coordonnée, comme dans :

unitsize(x=1cm, y=.5cm);
pair A, B, C,D;
A=(0,0);
B=(2,0);
C=(4,0);
D=(4,2);
draw(A--B);
draw(C--D);

ce qui donne comme image :

Size

La documentation donne :

The size routine specifies the dimensions of the desired picture:

void size(picture pic=currentpicture, real x, real y=x,
bool keepAspect=Aspect);

If the x and y sizes are both 0, user coordinates will be interpreted as PostScript coordinates. In this case, the transform mapping pic to the final output frame is identity().

If exactly one of x or y is 0, no size restriction is imposed in that direction; it will be scaled the same as the other direction.

If keepAspect is set to Aspect or true, the picture will be scaled with its aspect ratio preserved such that the final width is no more than x and the final height is no more than y.

If keepAspect is set to IgnoreAspect or false, the picture will be scaled in both directions so that the final width is x and the height is y.

Reprise des exemples trouvés ici. Pour les exemples qui suivent, le code est toujours le même, à savoir :

< partie variable du code >
pair A, B, C, D;
A=(0,0);
B=(2,0);
C=(4,0);
D=(4,2);
draw (A--B);
draw (C--D);

Exemple 1

Si l’on met size(0,0); alors on obtient :

Aucune restriction en x et y, l’unité par défaut est 1/72 in.

Exemple 2

Si l’on met size(1cm,0); alors on obtient :

La largeur de l’image sera de 1 cm, aucune restriction pour la hauteur.

Exemple 3

Si l’on met size(3cm,0); alors on obtient :

La largeur de l’image sera de 3 cm, aucune restriction pour la hauteur.

Exemple 4

Si l’on met size(1cm,.5cm); alors on obtient :

Les dimensions de l’image seront de 1 cm maximum en x et 0,5 cm maximum en y, en respectant ses proportions (rappel : l’image a un rapport r=largeur/hauteur=4/2=2).

Exemple 5

Si l’on met size(3cm,.5cm); alors on obtient :

Les dimensions de l’image seront 3 cm maximum en x et 0,5 cm maximum en y, en respectant ses proportions. Si l’on joue sur la largeur, on aurait une nouvelle largeur égale à 3 cm et une hauteur égale à 1,5 cm > 0,5 cm. On joue alors sur la hauteur : la nouvelle hauteur est de 0,5 cm et la nouvelle largeur est de 1 cm.

Exemple 6

Si l’on met size(3cm,.5cm,false); alors on obtient :

Les dimensions seront exactement de 3 cm x 0,5 cm puisque les proportions de l’image ne sont pas respectées.

Exemple 7

Si l’on met size(1cm,3cm,false); alors on obtient :

Les dimensions de l’image seront exactement 1 cm x 3 cm puisque les proportions de l’image ne sont pas respectées.

Publié dans asymptote. Mots-clefs : , . Laisser un Commentaire »
Suivre

Get every new post delivered to your Inbox.