LABELS - EFFETS DE TEXTE (41)
Liste des figures
Figure fig_aa01_110408_label
figure 0001
Figure fig_aa02_110408_label
figure 0002
Figure fig_aa03_110408_label
figure 0003
Figure fig_aa04_110408_label
figure 0004
Figure fig_aa05_130408_label
figure 0005
Figure fig_aa06_070514_label
figure 0006
Figure fig_ab01_030420_fontsize
figure 0007
Figure fig_ab01_030420_fontsize_package
figure 0008
Figure fig_ab01_130408_fontsize
figure 0009
Figure fig_ab02_020808_polices
figure 0010
Figure fig_ab03_020808_polices
figure 0011
Figure fig_ca01_010808_couleurs
figure 0012
Figure fig_cr01_050409_couleurs_rgb
figure 0013
Figure fig_cr02_050409_couleurs_rgb
figure 0014
Figure fig_cr03_050409_couleurs_rgb
figure 0015
Figure fig_ea01_260208_effet_texte
figure 0016
Figure fig_eb01_050408_effet_texte
figure 0017
Figure fig_ee01_300509_effet_texte_3D
figure 0018
Figure fig_ee02_300509_effet_texte_3D
figure 0019
Figure fig_ee03_300509_effet_texte_3D
figure 0020
Figure fig_ee04_041211_effet_texte_3D
figure 0021
Figure fig_ee05_041211_effet_texte_3D
figure 0022
Figure fig_fo01_120409_format
figure 0023
Figure fig_fo01b_120409_format
figure 0024
Figure fig_fo02_120409_format
figure 0025
Figure fig_fo03_120409_format
figure 0026
Figure fig_ft01_120409_texfrac
figure 0027
Figure fig_ft02_120409_texfrac
figure 0028
Figure fig_la01_160208_label_layer
figure 0029
Figure fig_lp01_281011_label_position
figure 0030
Figure fig_oa01_181208_object_label
figure 0031
Figure fig_oa02_181208_object_label
figure 0032
Figure fig_oa03_181208_object_label
figure 0033
Figure fig_oa04_231211_object_label
figure 0034
Figure fig_oa05_231211_object_label
figure 0035
Figure fig_oa06_231211_object_label
figure 0036
Figure fig_pa01_160409_pen_basealign
figure 0037
Figure fig_sp01_150109_spirale_envelope_ellipse
figure 0038
Figure fig_sp02_150109_spirale_envelope_ellipse
figure 0039
Figure fig_xa01_190308_logo_asymptote
figure 0040
Figure fig_xa02_050209_version_asymptote
figure 0041
Asymptote - Figure 0001: fig_aa01_110408_label.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_aa01_110408_label
unitsize(1cm);

// On place le point (0,0) et on l'étiquette A au nord-ouest.
dot(Label("$A$"),(0,0),NW,red);

// Une syntaxe plus rapide pour la même chose.
dot("$A$",(1,0),NW,red);

// ... mais l'utilisation de Label permet de spécifier
// séparément les mises en forme du point et de son label.
dot(Label("$A$",blue),(2,0),NW,red); // Point rouge, étiquette bleue

// Utilisation de fontsize pour la taille du label.
dot(Label("$B$",fontsize(16pt)+.7green),(1,-1),E,4bp+purple);

// Des fonctions séparées pour mettre point et/ou label :
dot((1,-2));
label("$C$",(1,-2),S);

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm));
Asymptote - Figure 0002: fig_aa02_110408_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa02_110408_label
unitsize(3cm);

dot((0,0));
label("N",(0,0),N);
label("E",(0,0),E);
label("S",(0,0),S);
label("W",(0,0),W);

dot((1,0));
label("NE",(1,0),NE);
label("SE",(1,0),SE);
label("SW",(1,0),SW);
label("NW",(1,0),NW);

pair A=(0,-1);
dot(A);
label("N",A,2N);
label("E",A,4E);
label("S",A,6S);
label("W",A,8W);

pair M=(1,-1);
dot(M);
label("A",M,N+NE); // A au Nord Nord-Est
label("B",M,S+SE); // B au Sud Sud-Est
label("C",M,W+NW); // C au Ouest Nord-Ouest
label("D",M,W+SW); // D au Ouest Sud-Ouest

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm));
Asymptote - Figure 0003: fig_aa03_110408_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa03_110408_label
unitsize(3cm);

// Labels en mode texte
dot((0,0));
label("N",(0,0),5N);
label("E",(0,0),5E);
label("S",(0,0),5S);
label("W",(0,0),5W);

// Labels en mode maths
dot((1,0));
label("$N$",(1,0),5N);
label("$E$",(1,0),5E);
label("$S$",(1,0),5S);
label("$W$",(1,0),5W);

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm));
Asymptote - Figure 0004: fig_aa04_110408_label.asy
(Code compilé avec Asymptote version 2.28svn-r5618)
largeur320 Figure fig_aa04_110408_label
size(7cm,0);

draw(unitcircle); // On trace le cercle de centre O et rayon 1...
dot(unitcircle,blue); // et les 4 points qui ont défini sa construction.

defaultpen(fontsize(12pt)+red); // Stylo par défaut
pen p2=fontsize(8pt)+paleblue;  // Un stylo particulier pour certains labels.

label("Nord (N)",(0,1),N); // Etiquette au nord du point (0,1)
label("Est (E)",(1,0),E); // Etiquette à l'est du point (1,0)
label("Sud (S)",(0,-1),S); // Etiquette au sud du point (0,-1)
label("Ouest (W)",(-1,0),W); // Etiquette à l'ouest du point (-1,0)

real t=sqrt(2)/2; // t est le réel égal à la moitie de racine carrée de 2.

label("Nord-Est",(t,t),NE,p2); // Etiquette au nord-est du point (t,t).
label("Nord-Ouest",(-t,t),NW,p2);
label("Sud-Ouest",(-t,-t),SW,p2);
label("Sud-Est",(t,-t),SE,p2); // Etiquette au sud-est du point (t,-t).

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm));
Asymptote - Figure 0005: fig_aa05_130408_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa05_130408_label
unitsize(1cm);
import math;

add(grid(4,4,gray)); // Une grille de 4 sur 4

dot("$O$",(0,0),SE,green); // On place l'origine du repère.
pair A=(1,1); // On définit le centre d'un octogone,
real r=2; // le rayon de son cercle circonscrit...
draw(shift(A)*rotate(22.5)*scale(r)*polygon(8)); // ... et on le trace.
/* Quelques explications : 
   polygon(8) : octogone inscrit dans le cercle trigonométrique
   scale(r) : agrandissement de rapport r=2
   rotate(22.5) : rotation de centre O, d'angle 22,5°
   shift(A) : translation de vecteur vec(OA)
*/
pen p1=fontsize(12pt)+1bp+red; // Deux stylos différents
pen p2=fontsize(9pt)+blue;     // pour écrire les étiquettes.

label("N",A+r*N,N,p1); // A+r*N désigne le point (1,1)+2*(0,1)=(1,3)
label("E",A+r*E,E,p1);
label("S",A+r*S,S,p1); // A+r*S désigne le point (1,1)+2*(0,-1)=(1,-1)
label("W",A+r*W,W,p1);

label(rotate(45)*"NE",A+r*NE,NE,p2);
label(rotate(-45)*"NW",A+r*NW,NW,p2);
label(rotate(45)*"SW",A+r*SW,SW,p2);
label(rotate(-45)*"SE",A+r*SE,SE,p2);

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm,gray));
Asymptote - Figure 0006: fig_aa06_070514_label.asy
(Code compilé avec Asymptote version 2.28svn-r5618)
largeur320 Figure fig_aa06_070514_label
size(7cm,0);

// Un "tableau" de "pairs" prédéfinis par Asymptote
pair p[]={N,S,E,W,NE,NW,SE,SW,NNE,NNW,SSE,SSW,ENE,ESE,WNW,WSW};
string n[]={"N","S","E","W","NE","NW","SE","SW","NNE","NNW","SSE","SSW","ENE","ESE","WNW","WSW"};


for(int k=0; k<p.length; ++k) 
    dot(Label(n[k],align=p[k]),p[k]);

// Ajout d'un cadre, distant des bords de l'image de 5mm
shipout(bbox(5mm));
Asymptote - Figure 0007: fig_ab01_030420_fontsize.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ab01_030420_fontsize
unitsize(1cm);
import math;

defaultpen(fontsize(10pt));
label("$10$",(0,0),blue);
label("$15$",(1,0),fontsize(15pt)+red);
label("$20$",(2,0),fontsize(20pt)+green);
label("$25$",(3,0),fontsize(25pt)+blue);
label("$30$",(4,0),fontsize(30pt)+red);
label("$35$",(5,0),fontsize(35pt)+green);
label("$40$",(6,0),fontsize(40pt)+blue);
label("$45$",(7,0),fontsize(45pt)+red);
label("Comprendre la taille des \'etiquettes (labels).",(0,1),E);
label("Comparer avec l'exemple suivant !",(7.5,-1),W);
Asymptote - Figure 0008: fig_ab01_030420_fontsize_package.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ab01_030420_fontsize_package
unitsize(1cm);
import math;

///////////////////////////////////////////////////////////////////
import fontsize; // <<<<<<<<< pour obtenir des tailles plus grandes
///////////////////////////////////////////////////////////////////

defaultpen(fontsize(10pt));
label("$10$",(0,0),blue);
label("$15$",(1,0),fontsize(15pt)+red);
label("$20$",(2,0),fontsize(20pt)+green);
label("$25$",(3,0),fontsize(25pt)+blue);
label("$30$",(4,0),fontsize(30pt)+red);
label("$35$",(5,0),fontsize(35pt)+green);
label("$40$",(6,0),fontsize(40pt)+blue);
label("$45$",(7,0),fontsize(45pt)+red);
label("Comprendre la taille des \'etiquettes (labels).",(0,1),E);
label("Comparer avec l'exemple pr\'ec\'edent !",(7.5,-1),W);
Asymptote - Figure 0009: fig_ab01_130408_fontsize.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ab01_130408_fontsize
unitsize(1cm,0);
import math;
add(grid(6,6,gray)); // Une grille de 6 sur 6

label("fontsize(8pt)+purple",(3,1),fontsize(8pt)+purple);
label("fontsize(10pt)+green",(3,2),fontsize(10pt)+green);
label("fontsize(12pt)+red",(3,3),fontsize(12pt)+red);
label("fontsize(14pt)+blue",(3,4),fontsize(14pt)+blue);
label("fontsize(16pt)+orange",(3,5),fontsize(16pt)+orange);
Asymptote - Figure 0010: fig_ab02_020808_polices.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ab02_020808_polices
unitsize(1cm,1cm);

real i=0,j=0;

pen p1=AvantGarde(series="m",shape="n");
pen p2=Bookman(series="m",shape="n");
pen p3=Courier(series="m",shape="n");
pen p4=Helvetica(series="m",shape="n");
pen p5=NewCenturySchoolBook(series="m",shape="n");
pen p6=Palatino(series="m",shape="n");
pen p7=TimesRoman(series="m",shape="n");
pen p8=ZapfChancery(series="m",shape="n");
pen p9=Symbol(series="m",shape="n");

/* Une fonte possède une famille (family), un codage (encoding) et aussi :
+ une série (series) de valeur m par défaut
  Les autres valeurs sont obtenues par une combinaison de deux attributs :
  - un poids (qui correspond à la graisse de la fonte) :
  ul (ultral), el (extral), l (light), sl (semil), sb (semib), b (bold),
  eb (extrab), ub (ultrab),
  - une largeur : uc (ultrac), ec (extrac), c (condensed),
  sc (semic), m (medium), sx (semix), x (expanded), ex (extrax), ux (ultrax).
+ une forme (shape) dont la valeur par défaut est n
  Autres valeurs : n, it, sl, sc, ui, ol
  La forme correspond aux différents variations de la fonte : n pour normal,
  it pour italique, sl pour penché (slanted), sc pour les petites capitales.
*/

void testpolice(string phrase, pen police, real d=0) {
   label(phrase,(i,j),police);
   label("ABCDEFGHIJK",(i+3,j-d),police);
   label("abcdefghijk",(i+3,j-.5-d),police);
   label("0123456789",(i+3,j-1-d),police);
   j-=2+d;
}

testpolice("AvantGarde",p1);
testpolice("Bookman",p2);
testpolice("Courier",p3);
testpolice("Helvetica",p4);
testpolice("NewCenturySchoolBook",p5,.5);
testpolice("Palatino",p6);
testpolice("TimesRoman",p7);
testpolice("ZapfChancery",p8);
testpolice("Symbol",p9);

shipout(bbox(3mm,white));
Asymptote - Figure 0011: fig_ab03_020808_polices.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ab03_020808_polices
unitsize(1cm,1cm);

real i=0,j=0;

pen p1=Helvetica(series="m",shape="n");
pen p2=Helvetica(series="m",shape="it");
pen p3=Helvetica(series="b",shape="n");

/* Une fonte possède une famille (family), un codage (encoding) et aussi :
+ une série (series) de valeur m par défaut
  Les autres valeurs sont obtenues par une combinaison de deux attributs :
  - un poids (qui correspond à la graisse de la fonte) :
  ul (ultral), el (extral), l (light), sl (semil), sb (semib), b (bold),
  eb (extrab), ub (ultrab),
  - une largeur : uc (ultrac), ec (extrac), c (condensed),
  sc (semic), m (medium), sx (semix), x (expanded), ex (extrax), ux (ultrax).
+ une forme (shape) dont la valeur par défaut est n
  Autres valeurs : n, it, sl, sc, ui, ol
  La forme correspond aux différents variations de la fonte : n pour normal,
  it pour italique, sl pour penché (slanted), sc pour les petites capitales.
*/

void testpolice(string phrase, pen police, real d=0) {
   label(phrase,(i,j),police);
   label("ABCDEFGHIJK",(i+3,j-d),police);
   label("abcdefghijk",(i+3,j-.5-d),police);
   label("0123456789",(i+3,j-1-d),police);
   j-=2+d;
}

testpolice("Helvetica",p1);
testpolice("Helv.italique",p2);
testpolice("Helv.gras",p3);

shipout(bbox(3mm,white));
Asymptote - Figure 0012: fig_ca01_010808_couleurs.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ca01_010808_couleurs
size(7.5cm,0);

int i=0;
int j=0;

bool components=false;

pen p;

void col(bool fill=false ... string[] s) {
  for(int n=0; n < s.length; ++n) {
    j -= 30;
    string s=s[n];
    eval("p="+s+";",true);
    if(components) {
      real[] a=colors(p);
      for(int i=0; i < a.length; ++i)
        s += " "+(string) a[i];
    }
    if(fill) label(s,(i+30,j),E,p,Fill(gray));
    else label(s,(i+30,j),E,p);
    fill(box((i,j-5),(i+30,j+5)),p);
  }
}

col("palered"); col("lightred"); col("mediumred"); col("red");
col("heavyred"); col("brown"); col("darkbrown");
j -= 30;

col("palegreen"); col("lightgreen"); col("mediumgreen");
col("green"); col("heavygreen"); col("deepgreen"); col("darkgreen");
j -= 30;

col("paleblue"); col("lightblue"); col("mediumblue"); col("blue");
col("heavyblue"); col("deepblue"); col("darkblue");
j -= 30;

col("palecyan"); col("lightcyan"); col("mediumcyan"); col("cyan");
col("heavycyan"); col("deepcyan"); col("darkcyan");
j -= 30;

col("pink"); col("lightmagenta"); col("mediummagenta"); col("magenta");
col("heavymagenta"); col("deepmagenta"); col("darkmagenta");
j -= 30;

col("paleyellow"); col("lightyellow"); col("mediumyellow");
col("yellow"); col("lightolive"); col("olive"); col("darkolive");
j -= 30;

i += 300;
j=0;

col("palegray"); col("lightgray"); col("mediumgray"); col("gray");
col("heavygray"); col("deepgray"); col("darkgray");
j -= 30;

col("black"); col("white",fill=true);
j -= 30;

col("orange"); col("fuchsia");
j -= 30;

col("chartreuse"); col("springgreen");
j -= 30;

col("purple"); col("royalblue");
j -= 30;

col("Cyan"); col("Magenta"); col("Yellow"); col("Black");
j -= 30;

col("cmyk+red"); col("cmyk+blue"); col("cmyk+green");
Asymptote - Figure 0013: fig_cr01_050409_couleurs_rgb.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_cr01_050409_couleurs_rgb
// couleurs obtenues avec rgb(a,b,0),
// avec a et b réels entre 0 et 1.

unitsize(.6cm);

defaultpen(fontsize(10pt)+blue); // Stylo par défaut

int n=10;
for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
        pen p =rgb(i/n,j/n,0);
        filldraw(shift(j,i)*unitsquare,p,.2bp+black);
        if(i==0) label(string(j/n),(j+.5,0),S);
    }
    label(string(i/n),(0,i+.5),W);
}
label("rgb(a,b,0)",(n/2,n+1),N);
label("b",(n/2,-1),S);
label("a",(-1.3,n/2),W);
Asymptote - Figure 0014: fig_cr02_050409_couleurs_rgb.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_cr02_050409_couleurs_rgb
// couleurs obtenues avec rgb(a,0,b),
// avec a et b réels entre 0 et 1.

unitsize(.6cm);

defaultpen(fontsize(10pt)+blue); // Stylo par défaut

int n=10;
for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
        pen p =rgb(i/n,0,j/n);
        filldraw(shift(j,i)*unitsquare,p,.2bp+black);
        if(i==0) label(string(j/n),(j+.5,0),S);
    }
    label(string(i/n),(0,i+.5),W);
}
label("rgb(a,0,b)",(n/2,n+1),N);
label("b",(n/2,-1),S);
label("a",(-1.3,n/2),W);
Asymptote - Figure 0015: fig_cr03_050409_couleurs_rgb.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_cr03_050409_couleurs_rgb
// couleurs obtenues avec rgb(0,a,b),
// avec a et b réels entre 0 et 1.

unitsize(.6cm);

defaultpen(fontsize(10pt)+blue); // Stylo par défaut

int n=10;
for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
        pen p =rgb(0,i/n,j/n);
        filldraw(shift(j,i)*unitsquare,p,.2bp+black);
        if(i==0) label(string(j/n),(j+.5,0),S);
    }
    label(string(i/n),(0,i+.5),W);
}
label("rgb(0,a,b)",(n/2,n+1),N);
label("b",(n/2,-1),S);
label("a",(-1.3,n/2),W);
Asymptote - Figure 0016: fig_ea01_260208_effet_texte.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ea01_260208_effet_texte
frame f;
label(f,"\textbf{Asymptote}",yellow,Fill(.5blue));
add(rotate(20)*scale(3)*f);
Asymptote - Figure 0017: fig_eb01_050408_effet_texte.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_eb01_050408_effet_texte
/* Ecrire le long d'un chemin
*/
import labelpath;

unitsize(1cm);

string t="\Large Ecrire sur un chemin";

path c=(0,0)..(2,2)..{dir(10)}(7,0.5);

labelpath(t,c);

draw(c, red);



Asymptote - Figure 0018: fig_ee01_300509_effet_texte_3D.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ee01_300509_effet_texte_3D
import graph3; 
size(7.5cm,0); 

currentprojection=perspective(100,100,200,up=Y); 
 
draw(extrude("ABC",2Z),red); 

limits(O,10(X+Y+Z));
xaxis3(Label("$x$",1),blue,arrow=Arrow3);
yaxis3(Label("$y$",1),blue,arrow=Arrow3);
zaxis3(Label("$z$",1),blue,arrow=Arrow3);
Asymptote - Figure 0019: fig_ee02_300509_effet_texte_3D.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ee02_300509_effet_texte_3D
import graph3; 
size(7.5cm,0); 

currentprojection=perspective(100,100,150); 
 
draw(extrude("ABC",3Z),green); 

limits(O,15X+10Y+15Z);
xaxis3(Label("$x$",1),blue,arrow=Arrow3);
yaxis3(Label("$y$",1),blue,arrow=Arrow3);
zaxis3(Label("$z$",1),blue,arrow=Arrow3);
Asymptote - Figure 0020: fig_ee03_300509_effet_texte_3D.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ee03_300509_effet_texte_3D
import graph3; 
size(7.5cm,0); 

currentprojection=perspective(100,100,50); 
 
draw(rotate(90,X)*extrude("ABC",Z),orange); 

limits(O,15X+10Y+7Z);
xaxis3(Label("$x$",1),blue,arrow=Arrow3);
yaxis3(Label("$y$",1),blue,arrow=Arrow3);
zaxis3(Label("$z$",1),blue,arrow=Arrow3);
Asymptote - Figure 0021: fig_ee04_041211_effet_texte_3D.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_ee04_041211_effet_texte_3D
import three;
size(7.5cm);

currentprojection=perspective(camera=(3,5,6),up=Y);
currentlight=Headlamp;

surface p=extrude("$\alpha x^2$",2Z);
draw(p,material(blue));
draw(shift(0,10,0)*p,material(blue,red));
Asymptote - Figure 0022: fig_ee05_041211_effet_texte_3D.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_ee05_041211_effet_texte_3D
import three;
size(7.5cm);

currentprojection=orthographic(camera=(3,5,6),up=Y);
currentlight=Headlamp;

surface p=extrude("$\alpha x^2$",2Z);
draw(p,material(blue));
draw(shift(0,10,0)*p,material(blue,yellow));
Asymptote - Figure 0023: fig_fo01_120409_format.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_fo01_120409_format
// une façon d'obtenir des écritures décimales avec virgule :
usepackage("icomma");
locale("fr_FR"); 

size(7cm,5cm,IgnoreAspect);

int k=0;
label(string(pi),(0,k));
label(format(pi),(0,--k));
label(format("%f",pi),(0,--k));
label(format("%.2f",pi),(0,--k));
label(format("%.5f",pi),(0,--k));

shipout(bbox(.5cm,Fill(white)));
Asymptote - Figure 0024: fig_fo01b_120409_format.asy
(Code compilé avec Asymptote version 2.22svn-r5538)
largeur320 Figure fig_fo01b_120409_format
///////////////////////////////////////
/// TEST de l'exemple précédent (vieux de 3 ans)
/// avec un serveur réactualisé et une version d'Asymptote récente
///////////////////////////////////////

// une façon d'obtenir des écritures décimales avec virgule :
usepackage("icomma");
locale("fr_FR"); 

size(7cm,5cm,IgnoreAspect);

int k=0;
label(string(pi),(0,k));
label(format(pi),(0,--k));
label(format("%f",pi),(0,--k));
label(format("%.2f",pi),(0,--k));
label(format("%.5f",pi),(0,--k));

shipout(bbox(.5cm,Fill(white)));
Asymptote - Figure 0025: fig_fo02_120409_format.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_fo02_120409_format
usepackage("siunitx", "locale=DE"); // autre extension qui permet
// d'obtenir des écritures décimales avec virgule au lieu de point.

size(7cm,5cm,IgnoreAspect);

int k=0;
label(string(pi),(0,k));
label(format("\num{%f}",pi),(0,--k));
label(format("\num{%.2f}",pi),(0,--k));
label(format("\num{%.5f}",pi),(0,--k));

shipout(bbox(.5cm,Fill(white)));
Asymptote - Figure 0026: fig_fo03_120409_format.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_fo03_120409_format
// Un exemple de Philippe
defaultpen(fontsize(9pt)+blue);

size(8cm,0);

pair x=0;
pair y=(-6.5cm,0);

label(format(6.66666), x, E);
label("format(6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%f$", 6.66666), x, E);
label("format(\"\$x=\%f\$\", 6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%.1f$", 6.66666), x, E);
label("format(\"\$x=\%.1f\$\", 6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%.2f$", 6.66666), x, E);
label("format(\"\$x=\%.2f\$\", 6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%.0f$", 6.66666), x, E);
label("format(\"\$x=\%.0f\$\", 6.6666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%07.3f$", 6.66666), x, E);
label("format(\"\$x=\%07.3f\$\", 6.6666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%7.3f$", 6.66666), x, E);
label("format(\"\$x=\% 7.3f\$\", 6.6666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%g$", 66.666), x, E);
label("format(\"\$x=\%g\$\", 66.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%g$", 666666.666), x, E);
label("format(\"\$x=\%g\$\", 666666.666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%g$", 666666666.666), x, E);
label("format(\"\$x=\%g\$\", 666666666.666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%e$", 666666.666), x, E);
label("format(\"\$x=\%e\$\", 666666.666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%.2e$", 666666.666), x, E);
label("format(\"\$x=\%.2e\$\", 666666.666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%i$", 6), x, E);
label("format(\"\$x=\%i\$\", 6)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%f$", 6.0), x, E);
label("format(\"\$x=\%f\$\", 6.0)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%+.2f$", 6.66666), x, E);
label("format(\"\$x=\%+.2f\$\", 6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=%+.2f$", -6.66666), x, E);
label("format(\"\$x=\%+.2f\$\", -6.66666)", y, E);

x+=(0,-1cm);y+=(0,-1cm);
label(format("$x=% .2f$", 6.666666), x, E);
label("format(\"\$x=\% .2f\$\", 6.666666)", y, E);
Asymptote - Figure 0027: fig_ft01_120409_texfrac.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_ft01_120409_texfrac
// Un exemple (à peine modifié) de Philippe
// d'utilisation de la fonction texfrac, 
// incluse dans son extension base_pi qui est téléchargeable ici : 
// base_pi.asy
/*
string texfrac(int p, int q,
               string factor="",
               bool signin=false, bool factorin=true,
               bool displaystyle=false,
               bool zero=true)
*/
import base_pi;
size(8cm,0);
defaultpen(.4green);

for (int i=-2; i<=4; ++i)
  {
    label(texfrac(i,4), (i*cm,0));
    label(texfrac(i,4,signin=true), (i*cm,-cm));
    label(texfrac(i,4,factor="\pi"), (i*cm,-2cm));
    label(texfrac(i,4,factor="\pi",factorin=false), (i*cm,-3cm));
    label(texfrac(i,4,factor="\pi",signin=true,factorin=true), (i*cm,-4cm));
    label(texfrac(i,4,factor="\pi",signin=true,factorin=false,
                                   displaystyle=true,zero=false), (i*cm,-5cm));
  }
Asymptote - Figure 0028: fig_ft02_120409_texfrac.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_ft02_120409_texfrac
// Un exemple d'utilisation des fonctions rational et texfrac, 
// incluses dans l'extension base_pi qui est téléchargeable ici : 
// base_pi.asy
/*
struct rational
  int p;    // numérateur
  int q;    // dénominateur
  real ep;  // précision avec laquelle le rationnel a été obtenu dans
            // le cas où il y convertion à partir d'un irrationnel.
}
rational operator init() {return new rational;}

La fonction rational rational(real x, real ep=1/10^5)
retourne un rationnel qui approche x en vérifiant abs(p/q-x)<=ep.

string texfrac(rational x,
               string factor="",
               bool signin=false, bool factorin=true,
               bool displaystyle=false,
               bool zero=true)
*/
import base_pi;
size(8cm,0);
defaultpen(fontsize(9pt)+.6red);

real x=0;
rational rat;

label(format("$\pi\approx %.15f$",pi),(x,-x));
for(int k=1; k<8;++k){
    rat=rational(pi,ep=1/10^(k));
    label(texfrac(rat)+format("$\approx %.15f$",rat.p/rat.q),(++x,-x));
}   
Asymptote - Figure 0029: fig_la01_160208_label_layer.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_la01_160208_label_layer
unitsize(1cm);

picture pic1; unitsize(pic1,1cm);
draw(pic1,(0,0)--(5,2),red);
label(pic1,"un label quelconque",(5,1),W);
fill(pic1,box((2.5,0),(4.5,2)),green);

picture pic2; unitsize(pic2,1cm);
draw(pic2,(0,0)--(5,2),red);
label(pic2,"un label quelconque",(5,1),W);
layer(pic2); // Les constructions suivantes de pic2 : dans un nouveau calque, au dessus !
             // Cela va permettre de dessiner au dessus d'un label !
fill(pic2,box((2.5,0),(4.5,2)),green);

frame f1=pic1.fit(),
      f2=pic2.fit(),
      f3=bbox(pic1,paleblue,Fill);

// Ajout des trois frames à currentpicture
add(f1);
add(f2,truepoint(S),S);
add(f3,truepoint(S),S);
Asymptote - Figure 0030: fig_lp01_281011_label_position.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_lp01_281011_label_position
unitsize(1cm);

path  seg=(0,4)--(5,3); // définition d'un chemin (segment).
transform t=shift(0,-.8); // définition d'une translation.

DefaultHead=SimpleHead;

draw("$a$",seg,Arrow());
draw(Label("$b$",BeginPoint),t*seg,Arrow());
draw(Label("$c$",EndPoint,red),t^2*seg,Arrow());
draw(Label("$d$",EndPoint,red),t^3*seg,S,Arrow());
draw(Label("$e$",EndPoint,align=S,red),t^4*seg,Arrow());
draw(Label("$f$",align=LeftSide),t^5*seg,Arrow());
draw(Label("$g$",align=RightSide),t^6*seg,Arrow());
draw(Label("$h$",align=Center),t^7*seg,Arrow());
draw(Label("$i$",align=Center,UnFill),t^8*seg,Arrow());
draw(Label("$j$",Relative(.25)),t^9*seg,Arrow());
draw(Label("$k$",Relative(.75),blue),t^10*seg,.5green,Arrow());

shipout(bbox(2mm,white));
Asymptote - Figure 0031: fig_oa01_181208_object_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_oa01_181208_object_label
unitsize(1cm);
real marge=3mm;
pair z0=(0,0);
pair z1=(0,2);
draw("LARGE ELLIPSE",ellipse,z0,marge);
draw("petite boite",box,z1,marge);

// mais comment les relier ? cf. exemple suivant
Asymptote - Figure 0032: fig_oa02_181208_object_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_oa02_181208_object_label
unitsize(1cm);
real marge=3mm;
pair z0=(0,0);
pair z1=(0,2);

object objet_0=draw("LARGE ELLIPSE",ellipse,z0,marge);
object objet_1=draw("petite boite",box,z1,marge);

add(new void(picture pic, transform t) {
    draw(pic,point(objet_0,E,t){E}..{W}point(objet_1,E,t),Arrow);
});

Asymptote - Figure 0033: fig_oa03_181208_object_label.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_oa03_181208_object_label
unitsize(1cm);

real marge=1mm; 

dot((0,0));
dot((2,0),red);

// object align(object F, pair align) 
// returns a copy of object F aligned in the direction align


// Objet à 1 bp = 1/72 inch = 127/360 mm = 0,035777 cm au nord du point (0,0)
object objet_1=align(object("N",ellipse,marge),N); 
add(objet_1); 

// Objet à 5 bp ( = 0,1763888 cm ) à l'est du point (0,0)
object objet_2=align(object("E",ellipse,marge),(5,0)); 
add(objet_2);

// Objet à 10 bp ( = 0,35777 cm ) au sud du point (0,0)
object objet_3=align(object("S",ellipse,marge),10S); 
add(objet_3); 

// Objet à 0 bp à l'ouest du point (0,0)
object objet_4=align(object("W",ellipse,marge),realEpsilon*W); 
add(objet_4); 

// Objet à 2 cm à l'est du point (0,0), à 0 cm à l'est du point (2,0)
object objet_5=align(object("E",ellipse,marge),(2,0)*3600/127); 
add(objet_5);
Asymptote - Figure 0034: fig_oa04_231211_object_label.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_oa04_231211_object_label
usepackage("esvect");
usepackage("fourier","upright");
import graph;
unitsize(0.75cm);
real u0=-1, r=3;
int n=4;
object objtemp, ui[];
pair   z[];
for(int k=0; k<=n; ++k){
  z.push(u0+k*r);
  objtemp = draw(Label(format("$u_%i$",k),align=N),ellipse,z[k],nullpen);
  ui.push(objtemp);
  label(format("$M_%i$",k),z[k],4S);
}
// Du "deferred drawing" pour le tracé des flèches entre les "objects".
add(new void(picture pic, transform t) {
     for(int k=0; k<n; ++k) 
         draw(pic,Label("$+r$",align=LeftSide),
                  point(ui[k],NE,t){NE}..{S}point(ui[k+1],N,t),
                  Arrow);
});
xaxis(Ticks("%",Step=1,step=1,Size=1mm));
draw("$\vec{i}$",(0,0)--(1,0),1.5bp+red,Arrow(SimpleHead,size=8));
label("$O$",0,S,red);
real abs[]={5,11};
for(real x:abs) labelx(string(x),x,realEpsilon*S);
Asymptote - Figure 0035: fig_oa05_231211_object_label.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_oa05_231211_object_label
usepackage("esvect");
usepackage("fourier","upright");
import graph;
unitsize(0.7cm);
real u0=-1, r=3;
int n=4;
object objtemp, ui[];
pair   z[];
int uc[]={2,4}; // rang des termes connus
for(int k=0; k<=n; ++k){
  z.push(u0+k*r);
  bool b; for(int j:uc) if(j==k) b=true;
  if (b) objtemp=draw(Label(format("$u_%i$",k)+format("$=%f$",z[k].x),align=N),
                      ellipse,z[k],red);
  else   objtemp=draw(Label(format("$u_%i$",k),align=N),
                      ellipse,z[k],nullpen);
  ui.push(objtemp);
  label(format("$M_%i$",k),z[k],S);
}
// Du "deferred drawing" pour le tracé des flèches entre les "objects".
add(new void(picture pic, transform t) {
     for(int k=0; k<n; ++k) 
         draw(pic,Label("$+r$",align=LeftSide),
                  point(ui[k],NE,t){NE}..{S}point(ui[k+1],N,t),
                  Arrow);
});
xaxis(Ticks("%",Step=1,step=1,Size=1mm));
draw("$\vec{i}$",(0,0)--(1,0),1.5bp+red,Arrow(SimpleHead,size=8));
label("$O$",0,S,red);
Asymptote - Figure 0036: fig_oa06_231211_object_label.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_oa06_231211_object_label
usepackage("esvect");
usepackage("fourier","upright");
import graph;
unitsize(0.27cm);
real u0=2, r=2;
int n=4;
object objtemp, ui[];
pair   z[];
int uc[]={3,4}; // rang des termes connus
for(int k=0; k<=n; ++k){
  z.push(u0*r^k);
  bool b; for(int j:uc) if(j==k) b=true;
  if (b) objtemp=draw(Label(format("$u_%i$",k)+format("$=%f$",z[k].x),align=N),
                      ellipse,z[k],red);
  else   objtemp=draw(Label(format("$u_%i$",k),align=N),
                      ellipse,z[k],nullpen);
  ui.push(objtemp);
  label(format("$M_%i$",k),z[k],S);
}
// Du "deferred drawing" pour le tracé des flèches entre les "objects".
add(new void(picture pic, transform t) {
     for(int k=0; k<n; ++k) 
         draw(pic,Label("$\times q$",align=LeftSide),
                  point(ui[k],NNE,t){N}..{S}point(ui[k+1],N,t),
                  Arrow);
});
xaxis(Ticks("%",Step=1,step=1,Size=1mm));
label("$O$",0,S,red);
Asymptote - Figure 0037: fig_pa01_160409_pen_basealign.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa01_160409_pen_basealign
// Comprendre le stylo (pen) "basealign"
unitsize(1cm);

pair c=(0,0); 
label("abc ijk pqr xyz",c,Align,blue); 
draw(c--c+3); // dessin de la ligne de base

c=c-(0,1);
label("abc ijk pqr xyz",c,Align,red+basealign); 
draw(c--c+3); // dessin de la ligne de base

shipout(bbox(5mm,white));
Asymptote - Figure 0038: fig_sp01_150109_spirale_envelope_ellipse.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_sp01_150109_spirale_envelope_ellipse
size(7.5cm);

pair        pO=(0,0);
int         n=100;
pen         p1=.5bp+blue, p2=paleblue, p3=blue, p4=.8white;
transform   t=scale(.4);
pair[]      z;

z[1]=(1,0);

for(int i=2; i<=n; ++i) {
    z[i]=rotate(90,z[i-1])*(z[i-1]+dir(z[i-1]));
}
for(int i=n; i>=2; --i) {
    real taux=1-i/(2*n);
    path ch=pO--z[i]--z[i-1];
    fill(ch--cycle,taux*p2);
    draw(ch,p1);
    draw(t*format("$\sqrt{%i}$",i), ellipse,z[i],p3,Fill(p4));
}
draw(pO--z[1],p1);
draw(t*"$\sqrt1$", ellipse,z[1],p3,Fill(p4));
Asymptote - Figure 0039: fig_sp02_150109_spirale_envelope_ellipse.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_sp02_150109_spirale_envelope_ellipse
size(7.5cm);

pair        pO=(0,0);
int         n=100;
pen         p1=.5bp+green, p2=palegreen, p3=blue, p4=paleyellow;
transform   t=scale(.4);
pair[]      z;

z[1]=(1,0);

for(int i=2; i<=n; ++i) {
    z[i]=rotate(90,z[i-1])*(z[i-1]+dir(z[i-1]));
}
for(int i=n; i>=2; --i) {
    real taux=1-i/(2*n);
    path ch=pO--z[i]--z[i-1];
    fill(ch--cycle,taux*p2);
    draw(ch,p1);
    draw(t*format("$\sqrt{%i}$",i), ellipse,z[i],p3,Fill(p4));
}
draw(pO--z[1],p1);
draw(t*"$\sqrt1$", ellipse,z[1],p3,Fill(p4));
Asymptote - Figure 0040: fig_xa01_190308_logo_asymptote.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_xa01_190308_logo_asymptote
/* Un exemple issu de la galerie du site officiel
   qui n'est dans cette partie que parce que c'est un texte
   et le logo de notre magnifique logiciel. :-))
*/
import graph;

size(7cm,4cm,IgnoreAspect);

picture logo(pair s=0, pen q) 
{
  picture pic;
  pen p=linewidth(2)+fontsize(24)+q;
  real a=-0.4;
  real b=0.95;
  real y=5;
  path A=(a,0){dir(10)}::{dir(89.5)}(0,3y/2);
  draw(pic,A,p);
  draw(pic,(0,-y){dir(88.3)}::{dir(20)}(b,0),p);
  real c=0.5*a;
  pair z=(0,2.5);
  label(pic,"{\it symptote}",z,0.25*E+0.169S,p);
  pair w=(0,1.7);
  draw(pic,intersectionpoint(A,w-1--w)--w,p);
  axes(pic,p);
  return shift(s)*pic;
} 

pair z=(-0.015,0.08);
for(int x=0; x < 10; ++x)
  add(logo(0.1*x*z,gray(0.04*x)));

add(logo(red));
Asymptote - Figure 0041: fig_xa02_050209_version_asymptote.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_xa02_050209_version_asymptote
size(7cm,0);
draw((0,0){dir(-45)}..{dir(45)}(10,0),red);
draw((5,1)--(5,3));
dotfactor=10;
dot((0,5));
dot((10,5));
label("Cr\'e\'e avec Asymptote "+version.VERSION,point(S),2S);
shipout(bbox(5mm,gray));

Dernière modification le Wed May 7 10:29:15 CEST 2014 par G.Marris       Valide XHTML