input mp-solid vardef grillexy(expr aa,bb,cc,dd)= save _grillexy; picture _grillexy; color Fc[][];color G[][]; for l=aa upto bb: for k=cc upto dd: G[l][k]=(k,l,0); endfor; endfor; apj:=0; for l=aa upto (bb-1): for k=cc upto (dd-1): apj:=apj+1; cpt[apj]:=apj; Fc[apj][1]:=G[l][k]; Fc[apj][2]:=G[l][k+1]; Fc[apj][3]:=G[l+1][k+1]; Fc[apj][4]:=G[l+1][k]; Fc[apj][5]:=(Fc[apj][1]+Fc[apj][2]+Fc[apj][3]+Fc[apj][4])/4; ALT[apj]:=-Zpart(GCoord(Fc[apj][1])); endfor; endfor; QS(1,apj); _grillexy=image( for k=1 upto apj: fill for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withcolor if arcenciel: Hsvtorgb(((k/apj)[0*360,1*360],0.5,0.5)) else: couleur fi; draw for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withpen pencircle scaled0.25bp; endfor; ); _grillexy enddef; vardef grillexz(expr aa,bb,cc,dd)= save _grillexz; picture _grillexz; color Fc[][];color G[][]; for l=aa upto bb: for k=cc upto dd: G[l][k]=(k/10,0,l/10); endfor; endfor; apj:=0; for l=aa upto (bb-1): for k=cc upto (dd-1): apj:=apj+1; cpt[apj]:=apj; Fc[apj][1]:=G[l][k]; Fc[apj][2]:=G[l][k+1]; Fc[apj][3]:=G[l+1][k+1]; Fc[apj][4]:=G[l+1][k]; Fc[apj][5]:=(Fc[apj][1]+Fc[apj][2]+Fc[apj][3]+Fc[apj][4])/4; ALT[apj]:=-Zpart(GCoord(Fc[apj][1])); endfor; endfor; QS(1,apj); _grillexz=image( for k=1 upto apj: fill for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withcolor if arcenciel: Hsvtorgb((180,(cpt[k]/apj)[0,1],(cpt[k]/apj)[0,1])) else: couleur fi; endfor; ); _grillexz enddef; vardef grilleyz(expr aa,bb,cc,dd)= save _grilleyz; picture _grilleyz; color Fc[][];color G[][]; for l=aa upto bb: for k=cc upto dd: G[l][k]=(0,k/10,l/10); endfor; endfor; apj:=0; for l=aa upto (bb-1): for k=cc upto (dd-1): apj:=apj+1; cpt[apj]:=apj; Fc[apj][1]:=G[l][k]; Fc[apj][2]:=G[l][k+1]; Fc[apj][3]:=G[l+1][k+1]; Fc[apj][4]:=G[l+1][k]; Fc[apj][5]:=(Fc[apj][1]+Fc[apj][2]+Fc[apj][3]+Fc[apj][4])/4; ALT[apj]:=-Zpart(GCoord(Fc[apj][1])); endfor; endfor; QS(1,apj); _grilleyz=image( for k=1 upto apj: fill for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withcolor if arcenciel: Hsvtorgb((120,(cpt[k]/apj)[0,1],(cpt[k]/apj)[0,1])) else: couleur fi; endfor; ); _grilleyz enddef; vardef grillecirc(expr aa,bb)= save _grillecirc; picture _grillecirc; color Fc[][];color G[][]; for l=aa step 5 until bb:%upto bb: for k=0 upto 10: G[l][k]=((k/10)*3*cosd(l),(k/10)*3*sind(-l),2); endfor; endfor; apj:=0; for l=aa step 5 until (bb-5): for k=0 upto 9: apj:=apj+1; cpt[apj]:=apj; Fc[apj][1]:=G[l][k]; Fc[apj][2]:=G[l][k+1]; Fc[apj][3]:=G[l+5][k+1]; Fc[apj][4]:=G[l+5][k]; Fc[apj][5]:=(Fc[apj][1]+Fc[apj][2]+Fc[apj][3]+Fc[apj][4])/4; ALT[apj]:=-Zpart(GCoord(Fc[apj][1])); endfor; endfor; QS(1,apj); _grillecirc=image( for k=1 upto apj: fill for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withcolor if arcenciel: Hsvtorgb((aa+180,(cpt[k]/apj)[0,1],1)) else: couleur fi; endfor; ); _grillecirc enddef; vardef tranche(expr aa,bb)= save _tranche; picture _tranche; color Fc[][];color G[][]; for l=aa step 5 until bb: for k=0 upto 10: G[l][k]=(3*cosd(l),3*sind(-l),2*k/10); endfor; endfor; apj:=0; for l=aa step 5 until (bb-5): for k=0 upto 9: apj:=apj+1; cpt[apj]:=apj; Fc[apj][1]:=G[l][k]; Fc[apj][2]:=G[l][k+1]; Fc[apj][3]:=G[l+5][k+1]; Fc[apj][4]:=G[l+5][k]; Fc[apj][5]:=(Fc[apj][1]+Fc[apj][2]+Fc[apj][3]+Fc[apj][4])/4; ALT[apj]:=-Zpart(GCoord(Fc[apj][1])); endfor; endfor; QS(1,apj); _tranche=image( for k=1 upto apj: fill for l=1 upto 4: Projette(Fc[cpt[k]][l])-- endfor cycle withcolor if arcenciel: Hsvtorgb((aa+180,1,(cpt[k]/apj)[0,1])) else: couleur fi; endfor; ); _tranche enddef; figureespace(-10u,-10u,10u,10u); Initialisation(500,45,20,50); arcenciel:=true; for k=90 step 5 until 265: draw tranche(k,k+5); endfor; for k=0 step 5 until 40: draw tranche(k,k+5); endfor; draw grillexz(0,20,0,30); draw grilleyz(0,20,0,30); for k=0 step 5 until 265: draw grillecirc(k,k+5); endfor; drawarrow Projette((0,0,1))--Projette((0,3,1)) withpen pencircle scaled 2bp; label.top(btex Saturation etex rotated(angle(Projette((0,3,1))-Projette((0,0,1)))),Projette((0,1.5,1))); drawarrow Projette((3.2*cosd(240),3.2*sind(-240),0))--Projette((3.2*cosd(240),3.2*sind(-240),2)) withpen pencircle scaled 2bp; label.rt(btex Valeur etex rotated(angle(Projette((3.2*cosd(240),3.2*sind(-240),0))-Projette((3.2*cosd(240),3.2*sind(-240),2)))),Projette((3.2*cosd(240),3.2*sind(-240),1))); drawarrow Projette((3.2*cosd(-30),3.2*sind(30),1.8))..Projette(((3.2*cosd(10),3.2*sind(-10),1.8)))..Projette(((3.2*cosd(20),3.2*sind(-20),1.8)))..Projette(((3.2*cosd(30),3.2*sind(-30),1.8))) withpen pencircle scaled 2bp; label.bot(btex Teinte etex rotated angle(Projette(((3.2*cosd(-30),3.2*sind(30),1.8)))-Projette((3.2*cosd(30),3.2*sind(-30),1.8))),Projette(((3.2*cosd(0),3.2*sind(0),1.8)))); finespace; end