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
|