Introduction à Metapost (L. Chéno) : un arbre

Auteur ou autrice : Laurent Chéno.

Mise en ligne le 7 avril 2023

Image du résultat de l’exemple

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).

Fichiers


cheno1-1.pdf

12.35 KB

Télécharger l’archive complète


cheno1-1.zip

147.42 KB