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: % % 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; beginfig(1); Surface("mobiusa.s"); endfig; beginfig(2) couleur := (0.42,0.65,0.80); Surface("mobiusb.s"); endfig; 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; 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; 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; 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; 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