MetaPost / Le ruban de Möbius (1790-1868)

mobius.mp

Les figures présentées ci-dessous sont des représentations du ruban calculées extérieurement à MetaPost.

Les différents fichiers utilisés (mobius{a|b|c}.s)sont dans l'archive.

fichier tgz  fichier mp

mobius.1 mobius.2 mobius.3 mobius.4 mobius.5 mobius.6 mobius.7
 input graph;
 
 u = 2cm;
 color couleur;
 couleur := (0.85,0.65,0.13);
 
 let ST = scantokens;
 
 % Lecture du fichier de données à l'aide de la procédure gdata de graph.mp
 % Chaque ligne du fichier correspond à une dalle, de la plus éloignée à la
 % plus proche du  point de vue. Les données sont structurées  de la façon
 % suivante: 
 % <indice1> <indice2> <point1> <point2> <point3> <point4> <facteur d'éclairement>
 % Les  indices sont  les références  de la dalle (deux paramètres) et les 
 % points sont les sommets du quadrilatère représentant la dalle.
 % Les données  étant rendues comme chaîne  de caractère  par gdata, elles 
 % sont converties dans leur type MetaPost à l'aide l'instruction scantokens.
 vardef Surface(expr s) =
     gdata(s,p,dalle(ST p1,ST p2,ST p3,ST p4,ST p5,ST p6,ST p7))
 enddef;
 
 def dalle(expr i,j,a,b,c,d,e) =
     fill (a--b--c--d--cycle) scaled u withcolor (e*couleur);
     draw (a--b--c--d--cycle) scaled u withcolor (0.6*e*couleur);
 enddef;
 
 
 
Conversion au format PDF de mobius.1
Vers la liste des images
 beginfig(1);
     Surface("mobiusa.s");
 endfig;
 
 
Conversion au format PDF de mobius.2
Vers la liste des images
 beginfig(2)
     couleur := (0.42,0.65,0.80);
     Surface("mobiusb.s");
 endfig;
 
 
Conversion au format PDF de mobius.3
Vers la liste des images
 beginfig(3)
     couleur := (0.2,0.8,0.2);
     Surface("mobiusc.s");
 endfig;
 
 path p;
 
 % On change la méthode de rendu de la dalle.
 def dalle (expr i,j,a,b,c,d,e) =
     draw (a--b--c--d--cycle) scaled u 
 	withpen pencircle scaled 0.4pt
 	withcolor (1-sqrt(e))*white;
 enddef;
 
 
Conversion au format PDF de mobius.4
Vers la liste des images
 beginfig(4)
     Surface("mobiusc.s");
 endfig;
 
 def dalle (expr i,j,a,b,c,d,e) =
   p := (a--b--c--d--cycle) scaled u ;
   if (i+j) mod 2 = 0:
     fill p withcolor e*couleur;
   fi;
 enddef;
 
 
Conversion au format PDF de mobius.5
Vers la liste des images
 beginfig(5)
     couleur := (0.93,0.47,0.62);
     Surface("mobiusb.s");
 endfig;
 
 def dalle (expr i,j,a,b,c,d,e) =
   p := (a..b..c..d..cycle) scaled u;
   fill p withcolor e*couleur;
   draw p withpen pencircle scaled 0.5pt 
     withcolor (white-couleur);
 enddef;
 
 
Conversion au format PDF de mobius.6
Vers la liste des images
 beginfig(6)
     couleur := (0.0,0.0,0.8);
     Surface("mobiusa.s");
 endfig;
 
 def dalle (expr i,j,a,b,c,d,e) =
     fill (a--b--c--d--cycle) scaled u 
 	withpen pencircle scaled 0.4pt
 	withcolor e*couleur;
 enddef;
 
 
Conversion au format PDF de mobius.7
Vers la liste des images
 beginfig(7)
     label(btex 
 	    $\displaystyle%
                 \left\{\matrix{X&=&(2+v\cos u)\cos 2u\cr
                                Y&=&(2+v\cos u)\sin 2u\cr
 			       Z&=&v\sin u\hfill}\right.$
 	  etex scaled 2.5,(-2u,2.3u)) withcolor (.2,.4,.1);
     couleur := (0.93,0.46,0);
     Surface("mobiusb.s");
     pair O;
     O = center currentpicture;
     draw (bbox currentpicture shifted -O) 
 	scaled 1.05 shifted O 
 	withcolor blue;
 endfig;
 
 end

 

Validation CSS Validation XHTMLJean-Michel Sarlat — Dernière modification : 5 septembre 2008 (0.07s - 3949566 - vendredi 9 janvier 2009) vers le haut