prologues := 2 ; defaultfont := "ptmr" ; input boxes ; beginfig(1) ; draw (0,0)--(10,10)--(20,0)--(10,-10)--cycle ; draw (0,-10)--(20,-10)--(20,10)--(0,10)--cycle ; endfig ; beginfig(2) ; draw (0,0)--(20,0){dir30}..{up}(40,40){dir-60}..{right}(60,0) ; for i=-5 upto 5: draw (0,-80){dir 15i}..(80,-80) ; endfor endfig ; beginfig(3) ; draw (0,0).. controls (100,50) and (-30,70) .. (80,0) ; draw (0,0)--(100,50)--(-30,70)--(80,0) dashed evenly ; endfig ; beginfig(4) ; % tracé du triangle z0 = (0,0) ; z1 = (4cm,0) ; z2 = (1cm,3cm) ; draw z0--z1--z2--cycle ; for i=0 upto 2: draw z[i] withpen pencircle scaled 4bp ; endfor % recherche de l'orthocentre H (z3 - z0) rotated 90 = whatever*(z2 - z1) ; (z3 - z1) rotated 90 = whatever*(z0 - z2) ; dotlabel.top("H",z3) ; % recherche du centre 0 du cercle circonscrit (z4 - 1/2[z0,z1]) rotated 90 shifted z0 = whatever[z0,z1] ; (z4 - 1/2[z1,z2]) rotated 90 shifted z1 = whatever[z1,z2] ; dotlabel.top("O",z4) ; endfig ; beginfig(5) ; z0 = (0,0) ; z1 = (5cm,0) ; z2 = (5cm,5cm) ; z3 = (0,5cm) ; transform T ; z0 transformed T = 1/4[z0,z1] ; z1 transformed T = 1/4[z1,z2] ; z2 transformed T = 1/4[z2,z3] ; path carre ; carre = z0--z1--z2--z3--cycle ; fill carre withcolor 0.8white ; fill carre transformed T withcolor white ; draw carre ; draw carre transformed T ; picture dessin ; dessin = currentpicture ; for i = 1 upto 8: dessin := dessin transformed T transformed T ; draw dessin ; endfor endfig ; beginfig(6) ; z0 = (0,0) ; z1 = (3cm,0) ; label.top("top",z0) ; label.bot("bot",z0) ; label.lft("lft",z0) ; label.rt("rt",z0) ; labeloffset := 12pt ; dotlabel.ulft("ulft",z1) ; dotlabel.urt("urt",z1) ; dotlabel.llft("llft",z1) ; dotlabel.lrt("lrt",z1) ; labeloffset := 3bp ; % défaut endfig ; beginfig(7) ; picture texte ; label("mesure de texte" infont defaultfont scaled 5,(0,0)) ; texte = currentpicture ; draw llcorner texte -- lrcorner texte -- urcorner texte -- ulcorner texte -- cycle ; label.llft("llcorner",llcorner texte) ; label.lrt("lrcorner",lrcorner texte) ; label.urt("urcorner",urcorner texte) ; label.ulft("ulcorner",ulcorner texte) ; % et on dispose aussi de center texte dotlabel.top("center",center texte) ; endfig ; beginfig(8) ; path p ; pair d ; p = (0,0) -- (5cm,0) ; d = (0,-5mm) ; draw p dashed withdots ; draw p shifted d dashed withdots scaled 2 ; draw p shifted 2d dashed evenly ; draw p shifted 3d dashed evenly scaled 2 ; draw p shifted 4d dashed evenly scaled 4 ; draw p shifted 6d ; draw p shifted 7d dashed evenly scaled 4 shifted (6bp,0) ; draw p shifted 8d dashed evenly scaled 4 shifted (18bp,0) ; draw p shifted 9d dashed dashpattern(on 12bp off 6bp on 3bp off 6bp) ; endfig ; beginfig(9) ; for i=0 upto 2: z[i] = (0,40i) ; z[i+3]-z[i] = (100,30) ; endfor pickup pencircle scaled 18 ; linecap := rounded ; draw z0..z3 withcolor .8white ; linecap := butt ; draw z1..z4 withcolor .8white ; linecap := squared ; draw z2..z5 withcolor .8white ; linecap := rounded ; % défaut for i=0 upto 5: draw z[i] withpen pencircle scaled 4bp ; endfor for i=6 upto 8: z[i] = (0,50i) shifted (0,-470) ; z[i+3] - z[i] = (60,40) ; z[i+6] - z[i] = (120,0) ; endfor pickup pencircle scaled 24 ; linejoin := rounded ; draw z6--z9--z12 withcolor .8white ; linejoin := mitered ; draw z7--z10--z13 withcolor .8white ; linejoin := beveled ; draw z8--z11--z14 withcolor .8white ; linejoin := rounded ; % défaut for i=6 upto 14: draw z[i] withpen pencircle scaled 4bp ; endfor endfig ; beginfig(10) ; drawarrow (0,0){up}..{right}(20,20) ; drawarrow reverse((20,20){down}..{right}(40,0)) ; drawdblarrow (40,0){right}..{down}(20,-40) ; pickup pencircle scaled 1bp ; drawarrow ((0,0){up}..{right}(20,20)) shifted (0,-80) ; drawarrow (reverse((20,20){down}..{right}(40,0))) shifted (0,-80) ; drawdblarrow ((40,0){right}..{down}(20,-40)) shifted (0,-80) ; endfig ; beginfig(11) ; path p ; p = (0,0) .. (30,40) .. (40,-20) .. (10,20) .. cycle ; draw p ; dotlabel.bot ("0",point 0 of p) ; dotlabel.ulft("1",point 1 of p) ; dotlabel.llft("2",point 2 of p) ; dotlabel.top ("3",point 3 of p) ; dotlabel.lft ("4",point 4 of p) ; draw subpath(1.3,3.2) of p withpen pencircle scaled 1.5bp ; endfig ; beginfig(12) ; path courbe ; numeric t[] ; courbe = (0,-4mm) for i = 1 upto 10: .. (i*3.5mm,i*i*.5mm-4mm) endfor ; x1 = 29mm ; for i = 1 upto 3: (t[i],whatever) = courbe intersectiontimes ((x[i],-infinity)--(x[i],infinity)) ; z[i] = point t[i] of courbe ; z[i] - (x[i+1],0) = whatever * direction t[i] of courbe ; draw (x[i],0)--z[i]--(x[i+1],0) ; draw z[i] withpen pencircle scaled 3bp ; endfor draw (0,0) -- (35mm,0) ; draw courbe withpen pencircle scaled 1bp ; endfig ; beginfig(13) ; path d[],p[],c ; d1 = (0,0)--(6cm,5cm) ; d2 = (0,0)--(6cm,2cm) ; p1 = (1cm,5cm){1,-5}..(2.5cm,2.5cm){2.5,-2.5}..(5cm,1cm){5,-1} ; p2 = (2cm,5cm){2,-5}..(4cm,2.5cm){4,-2.5}..(6cm,5/3 cm){18,-5} ; c = buildcycle(p1,d2,reverse p2,reverse d1) ; fill c withcolor .8white ; draw d1 ; draw d2 ; draw p1 ; draw p2 ; draw (p1 intersectionpoint d1) withpen pencircle scaled 4bp ; draw (p1 intersectionpoint d2) withpen pencircle scaled 4bp ; draw (p2 intersectionpoint d1) withpen pencircle scaled 4bp ; draw (p2 intersectionpoint d2) withpen pencircle scaled 4bp ; endfig ; beginfig(14) ; path cercle,rectangle,p ; z0 = (0,0) ; z1 = (4cm,1cm) ; cercle = fullcircle scaled 1cm shifted z0 ; rectangle = ((-5mm,-5mm)--(5mm,-5mm)--(5mm,5mm)--(-5mm,5mm)--cycle) shifted z1 ; draw cercle ; draw rectangle dashed evenly ; p = z0{dir150}..z1{dir-30} ; draw p dashed withdots scaled 0.3 ; drawarrow (p cutbefore cercle cutafter rectangle) ; endfig ; beginfig(15) ; path p,q ; p = (0,-5mm){right} for i = 1 upto 10 : ..(i*5mm,((-1)**i) * 5mm){right} endfor ; for i = 0 upto 10 : draw p shifted (0,i*5mm) ; endfor q = fullcircle scaled 3cm shifted (3cm,3cm) ; clip currentpicture to q ; draw q ; endfig ; beginfig(16) ; fill (0,0)--(3cm,0)--(3cm,2cm)--(0,2cm)--cycle withcolor 0.8white ; picture gris ; gris = currentpicture ; currentpicture := nullpicture ; % pour y voir quelque chose ... defaultdx := 40pt ; defaultdy := 30pt ; boxit.a(gris) ; a.c = (0,0) ; drawboxed(a) ; dotlabel.top ("n", a.n) ; dotlabel.ulft("nw",a.nw) ; dotlabel.lft ("w", a.w) ; dotlabel.llft("sw",a.sw) ; dotlabel.bot ("s", a.s) ; dotlabel.lrt ("se",a.se) ; dotlabel.rt ("e", a.e) ; dotlabel.urt ("ne",a.ne) ; dotlabel.top ("c", a.c) ; drawdblarrow a.w -- a.w shifted( a.dx,0) ; drawdblarrow a.e shifted(-a.dx,0) -- a.e ; drawdblarrow a.s -- a.s shifted(0, a.dy) ; drawdblarrow a.n shifted(0,-a.dy) -- a.n ; label.top("dx",a.w shifted ( a.dx/2,0)) ; label.top("dx",a.e shifted (-a.dx/2,0)) ; label.rt ("dy",a.s shifted (0, a.dy/2)) ; label.rt ("dy",a.n shifted (0,-a.dy/2)) ; defaultdx := 3bp ; defaultdy := 3bp ; % défaut endfig ; beginfig(17) ; boxjoin(a.sw = b.nw ; a.se = b.ne) ; boxit.a("A") ; boxit.b("B") ; boxit.c("C") ; boxit.d("D") ; a.c = (0,0) ; drawboxed(a,b,d,c,d) ; endfig ; beginfig(18) ; circleit.a("Bon début") ; % je veux un vrai cercle circleit.b("Triste fin") ; % je veux un ovale b.dx = b.dy ; a.c = (0,0) ; b.c = (4cm,0) ; drawboxed(a,b) ; path p ; p = a.c{up}..b.c{dir-45} ; drawarrow p cutbefore bpath.a cutafter bpath.b ; label.top("transition",point 0.5 of p) ; path q ; q = a.c{dir120}..a.c shifted (-3cm,0)..a.c{dir60} ; drawarrow q cutbefore bpath.a cutafter bpath.a ; picture dessin ; dessin = currentpicture ; currentpicture := nullpicture ; draw dessin rotated -90 ; endfig ; end