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

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


input boxes ;
 
vardef miArete(suffix a,b) expr p =
        drawarrow p cutbefore bpath.a cutafter bpath.b ;
        point .5*length p of p
enddef ;
 
vardef miBoucle@# expr p = miArete(@#,@#) @#.c{curl0}..@#.c+p..{curl0}@#.c enddef ;
 
def cercle(suffix a,b) = circleit.a() ; a.c = z.b ; enddef ;
 
beginfig(1)
 
         interim circmargin := 6bp ;
 
         z0 = (0,0) ;
         z1 - z0 = z7 - z6 = z8 - z7 = z9 - z8
                         = z10 - z9 = z11 - z10 = z3 - z2 = z5 - z4
                         = (z2 - z1) rotated -60 = (z4 - z1) rotated 60 = (z6 - z3) rotated 60
                         = (14mm,0) ;
 
         cercle(a)(0) ; cercle(b)(1) ; cercle(c)(2) ; cercle(d)(3) ; cercle(e)(4) ; cercle(f)(5) ;
         cercle(g)(6) ; cercle(h)(7) ; cercle(i)(8) ; cercle(j)(9) ; cercle(k)(10) ; cercle(l)(11) ;
 
         drawboxed(a,b,c,d,e,f,g,h,i,j,k,l) ;
 
         interim circmargin := 8bp ;
         circleit.ll(pic l) ; ll.c = z11 ;
         drawboxed(ll) ;
 
         drawarrow (-1cm,0)--z0 cutafter bpath.a ;
 
         label.top(btex $\varepsilon$ etex,miArete(a,b) a.c--b.c) ;
         label.ulft(btex $\varepsilon$ etex,miArete(b,c) b.c--c.c) ;
         label.top(btex $a$ etex,miArete(c,d) c.c--d.c) ;
         label.urt(btex $\varepsilon$ etex,miArete(d,g) d.c--g.c) ;
         label.urt(btex $\varepsilon$ etex,miArete(b,e) b.c--e.c) ;
         label.top(btex $b$ etex,miArete(e,f) e.c--f.c) ;
         label.ulft(btex $\varepsilon$ etex,miArete(f,g) f.c--g.c) ;
         label.top(btex $\varepsilon$ etex,miArete(g,h) g.c--h.c) ;
         label.top(btex $\varepsilon$ etex,miArete(h,i) h.c--i.c) ;
         label.top(btex $b$ etex,miArete(i,j) i.c--j.c) ;
         label.top(btex $\varepsilon$ etex,miArete(j,k) j.c--k.c) ;
         label.top(btex $a$ etex,miArete(k,ll) k.c--l.c) ;
         label.top(btex $\varepsilon$ etex,miArete(g,b) g.c{dir72}..b.c) ;
         label.bot(btex $\varepsilon$ etex,miArete(a,h) a.c{down}..h.c) ;
 
endfig ;
 
end
 

Mots clés : boxesautomate

Cet exemple fait partie de la collection d’exemples Introduction à MetaPost (L. Chéno).

Fichiers


cheno2-1.pdf

10.95 KB

Télécharger l’archive complète


cheno2-1.zip

110.54 KB