vardef origine(expr p)= x.origine:=xpart(p); y.origine:=ypart(p); enddef; vardef millimetre suffix co = color coul; numeric hauteur, largeur ; path p[]; %ligne horizontale p1:=(x.so*cm, 0)--(x.ne*cm, 0); %ligne verticale p2:=(0,y.so*cm)--(0,y.ne*cm); %choix de la couleur if str co ="" : coul:= orange else : coul:=co fi; %grille millimétrique pickup pencircle scaled 0.2; %lignes horizontales for i:=y.so step 0.1 until y.ne : draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille demi-centimétrique pickup pencircle scaled 0.5; %lignes horizontales for i:=y.so step 0.5 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille centimétrique pickup pencircle scaled 0.7; %lignes horizontales for i:=y.so step 1 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille penta-centimétrique %lignes horizontales pickup pencircle scaled 1; for i:=y.origine step -5 until y.so : draw p1 shifted (0,i*cm) withcolor coul; endfor; for i:=y.origine step 5 until y.ne : draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignesverticales for i:=x.origine step -5 until x.so : draw p2 shifted (i*cm,0) withcolor coul; endfor; for i:=x.origine step 5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; enddef; %graduation de l 'axe des x vardef graduationx(expr unitex,legendex) = dotlabel.llft(btex $O$ etex,(x.origine*cm,y.origine*cm)); label.llft(legendex,(x.ne*cm,y.origine*cm)); pickup pencircle scaled 0.5; dotlabel.bot(unitex,z.origine*cm+(1*x.u,0)); drawarrow (x.so*cm,y.origine*cm)--(x.ne*cm,y.origine*cm); %label.lrt( btex $x'$ etex,(x.so*cm,y.origine*cm)); enddef; %graduation de l 'axe des y vardef graduationy(expr unitey,legendey) = label.lrt(legendey,(x.origine*cm,y.ne*cm)); pickup pencircle scaled 0.5; dotlabel.lft(unitey,z.origine*cm+(0,1*y.u)); drawarrow (x.origine*cm,y.so*cm)--(x.origine*cm,y.ne*cm); %label.urt( btex $y'$ etex,(x.origine*cm,y.so*cm)) ; enddef; vardef papiermillimetre(expr m,n,p,q,r,sx,ty,ux,vy)(suffix col)= origine(m); x.u:=n*cm; y.u:=p*cm; z.so=q; z.ne=r; millimetre col; graduationx(sx,ty); graduationy(ux,vy); enddef; vardef papiermilli(expr m,n,p,q,r)(suffix col)= origine(m); x.u:=n*cm; y.u:=p*cm; z.so=q; z.ne=r; millimetre col; drawarrow (x.so*cm,y.origine*cm)--(x.ne*cm,y.origine*cm); drawarrow (x.origine*cm,y.so*cm)--(x.origine*cm,y.ne*cm); enddef; vardef papiermil(expr m,n,p,q,r)(suffix col)= origine(m); x.u:=n*cm; y.u:=p*cm; x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); millimetre col; enddef; vardef demicenti suffix co = color coul; path p[]; %ligne horizontale p1:=(x.so*cm, 0)--(x.ne*cm, 0); %ligne verticale p2:=(0,y.so*cm)--(0,y.ne*cm); %choix de la couleur if str co ="" : coul:= orange else : coul:=co fi; %grille demi-centimétrique pickup pencircle scaled 0.5; %lignes horizontales for i:=y.so step 0.5 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille centimétrique pickup pencircle scaled 0.5;%0.7 %lignes horizontales for i:=y.so step 1 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille penta-centimétrique %lignes horizontales pickup pencircle scaled 0.5;%1 for i:=0 step -5 until y.so : draw p1 shifted (0,i*cm) withcolor coul; endfor; for i:=0 step 5 until y.ne : draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignesverticales for i:=0 step -5 until x.so : draw p2 shifted (i*cm,0) withcolor coul; endfor; for i:=0 step 5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; enddef; vardef papiercinq(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); demicenti col; enddef; vardef pointe suffix co= pickup pencircle scaled 0.5; for i:=0 upto 2*(x.ne-x.so): for j:=0 upto 2*(y.ne-y.so): draw (fullcircle scaled 1bp shifted(z.so*cm)) shifted ((i/2,j/2)*cm) withcolor co; endfor endfor enddef; vardef papierpointe(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); pointe col; enddef; vardef centi suffix co = color coul; path p[]; %ligne horizontale p1:=(x.so*cm, 0)--(x.ne*cm, 0); %ligne verticale p2:=(0,y.so*cm)--(0,y.ne*cm); %choix de la couleur if str co="" : coul:= orange else : coul:=co fi; %grille centimétrique pickup pencircle scaled 0.5;%0.7 %lignes horizontales for i:=y.so step 1 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; enddef; vardef papierun(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); centi col; enddef; vardef cahier suffix co = color coul; path p[]; %ligne horizontale p1:=(x.so*cm, 0)--(x.ne*cm, 0); %ligne verticale p2:=(0,y.so*cm)--(0,y.ne*cm); %choix de la couleur if str co ="" : coul:= orange else : coul:=co fi; %grille 2-millimétrique pickup pencircle scaled 0.5; %lignes horizontales for i:=y.so step 0.2 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %grille 8-millimétrique pickup pencircle scaled 0.7; %lignes horizontales for i:=y.so step 0.8 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.8 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; enddef; vardef papiercahier(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); cahier col; enddef; vardef triang suffix co = color coul; path p[]; %triangle haut p1:=(x.so*cm,0)--((x.so+1)*cm,0)-- ((x.so*cm,0) rotatedabout(((x.so+1)*cm,0),-60))--cycle; %triangle bas p2:=((x.so*cm,0)--((x.so+1)*cm,0)--((x.so*cm,0) rotatedabout(((x.so+1)*cm,0),60))--cycle) shifted (-0.5cm,((sqrt3)/2)*cm); %choix de la couleur if str co ="" : coul:= noir else : coul:=co fi; %grille horizontale1 pickup pencircle scaled 0.5; numeric etag; etag=floor((y.ne-y.so)/(sqrt(3)/2)); for i:=0 step 2 until etag: for j:=0 upto (x.ne-x.so): draw p1 shifted (j*cm,i*((sqrt3)/2)*cm) withcolor coul; draw p2 shifted (j*cm,i*((sqrt3)/2)*cm) withcolor coul; endfor endfor; %grille horizontale 2 pickup pencircle scaled 0.5; for i:=1 step 2 until etag: for j:=0 upto (x.ne-x.so): draw p1 shifted ((j-0.5)*cm,i*((sqrt3)/2)*cm) withcolor coul; draw p2 shifted ((j+0.5)*cm,i*((sqrt3)/2)*cm) withcolor coul; endfor endfor; enddef; vardef papiertriangle(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); triang col; enddef; vardef isompointe suffix co = color coul; %choix de la couleur if str co ="" : coul:= noir else : coul:=co fi; %grille horizontale1 pickup pencircle scaled 0.5; for i:=0 step 1 until (y.ne-y.so): for j:=0 step 2 until (x.ne-x.so+2): draw (fullcircle scaled 1bp shifted (z.so*cm)) shifted (j*((sqrt3)/2)*cm,i*cm) withcolor coul; endfor endfor; %grille horizontale 2 pickup pencircle scaled 0.5; for i:=0 step 1 until (y.ne-y.so-1): for j:=1 step 2 until (x.ne-x.so+1): draw (fullcircle scaled 1bp shifted (z.so*cm)) shifted (j*((sqrt3)/2)*cm,(i+0.5)*cm) withcolor coul; endfor endfor; enddef; vardef papierisompointe(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); isompointe col; enddef; vardef isom suffix co = color coul; path p[]; %triangle haut p1:=(x.so*cm,1*cm)--((x.so*cm,0) rotatedabout((x.so*cm,1*cm),60))--(x.so*cm,0);%--cycle; %triangle bas p2:=((x.so*cm,1*cm)--((x.so*cm,0) rotatedabout((x.so*cm,1*cm),-60))--(x.so*cm,0)) shifted (((sqrt3)/2)*cm,0*cm); %choix de la couleur if str co ="" : coul:= noir else : coul:=co fi; %grille horizontale1 pickup pencircle scaled 0.5; for i:=0 step 2 until (x.ne-x.so): for j:=0 upto (y.ne-y.so-1): draw p1 shifted (i*((sqrt3)/2)*cm,j*cm) withcolor coul; draw p2 shifted ((i+1)*((sqrt3)/2)*cm,j*cm) withcolor coul; endfor endfor; enddef; vardef papierisom(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); isom col; enddef; vardef hexa suffix co = color coul; path p[]; %triangle haut p1:=(x.so*cm,y.so*cm)--((x.so+1)*cm,y.so*cm)--((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120))--(((x.so+1)*cm,y.so*cm) rotatedabout(((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)),-120))-- (((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)) rotatedabout((((x.so+1)*cm,y.so*cm) rotatedabout(((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)),-120)),-120))--((((x.so+1)*cm,y.so*cm) rotatedabout(((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)),-120)) rotatedabout((((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)) rotatedabout((((x.so+1)*cm,y.so*cm) rotatedabout(((x.so*cm,y.so*cm) rotatedabout(((x.so+1)*cm,y.so*cm),-120)),-120)),-120)),-120))--cycle; %choix de la couleur if str co ="" : coul:= noir else : coul:=co fi; %grille horizontale1 %draw p1 withpen pencircle scaled 3bp; pickup pencircle scaled 0.5; numeric etag; etag=floor((y.ne-y.so)/(sqrt(3)/2)); for i:=0 step 3 until (x.ne-x.so): for j:=0 step 2 until etag: draw p1 shifted (i*cm,j*((sqrt 3)/2)*cm) withcolor coul; draw p1 shifted ((i+1.5)*cm,(j+1)*((sqrt 3)/2)*cm) withcolor coul; endfor endfor; enddef; vardef papierhexa(expr q,r)(suffix col)= x.so:=xpart(q); y.so:=ypart(q); x.ne:=xpart(r); y.ne:=ypart(r); hexa col; enddef; endinput