Introduction à Metapost (L. Chéno) : un arbre
Auteur ou autrice : Laurent Chéno.
Mise en ligne le 7 avril 2023
Cet exemple fait parti des exemples et des illustrations de l'introduction à MetaPost de Laurent Chéno. Ces exemples et illustrations ont aussi été mis en ligne sur le site Syracuse.
Code
beginfig(1)
diametre = 20 pt ;
h = 50 pt ;
v = 60 pt ;
path demigauche,demidroit ;
demidroit = halfcircle scaled diametre rotated -90 -- cycle ;
demigauche = demidroit xscaled -1 ;
picture bb,bn,nb ;
fill fullcircle scaled diametre withcolor white ;
draw fullcircle scaled diametre ;
bb := currentpicture ;
currentpicture := nullpicture ;
fill demidroit withcolor black ;
fill demigauche withcolor white ;
draw fullcircle scaled diametre ;
bn := currentpicture ;
currentpicture := nullpicture ;
fill demigauche withcolor black ;
fill demidroit withcolor white ;
draw fullcircle scaled diametre ;
nb := currentpicture ;
currentpicture := nullpicture ;
% définition des coordonnées des sommets de l'arbre
z0 = (0,0) ;
y0 - y1 = y1 - y3 = y3 - y6 = y9 - y11 = v ; y1 = y2 ; y3 = y4 = y5 ; y6 = y7 = y8 = y9 = y10 ;
x10 - x9 = x9 - x8 = x8 - x7 = x7 - x6 = x4 - x3 = h ;
x4 = 1/2[x7,x8] ; x5 = 1/2[x9,x10] ; x1 = 1/2[x3,x4] ; x0 = 1/2[x1,x2] ;
x5 - x2 = x9 - x11 = h/2 ;
% tracé des arètes
draw z0 -- z1 -- z3 -- z6 ;
draw z1 -- z4 -- z8 ;
draw z4 -- z7 ;
draw z0 -- z2 -- z5 -- z10 ;
draw z5 -- z9 -- z11 ;
% tracé des sommets
def sbb(text g)(expr a)(text d) =
draw bb shifted a ;
label(g,a - (14pt,0)) ; label(d,a + (14pt,0)) ;
enddef ;
def sbn(text g)(expr a)(text d) =
draw bn shifted a ;
label(g,a - (14pt,0)) ; label(d,a + (14pt,0)) ;
enddef ;
def snb(text g)(expr a)(text d) =
draw nb shifted a ;
label(g,a - (14pt,0)) ; label(d,a + (14pt,0)) ;
enddef ;
snb("6")(z0)("5") ; sbn("2")(z1)("3") ; sbn("0")(z2)("4") ; snb("1")(z3)("0") ;
sbb("1")(z4)("1") ; snb("2")(z5)("1") ; sbb("0")(z6)("0") ; sbb("0")(z7)("0") ;
sbb("0")(z8)("0") ; snb("1")(z9)("0") ; sbb("0")(z10)("0") ; sbb("0")(z11)("0") ;
endfig ;
end
Mots clés : arbrecurrentpicture
Cet exemple fait partie de la collection d’exemples Introduction à MetaPost (L. Chéno).