Retour

Source : papiers.mp

papiers.mp
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