%% d apres un code original de Juergen Gilg %% http://melusine.eu.org/lab/bpst/pst-solides3d/surfaces/ex_7.pst -2 2 setxrange -2 2 setyrange 100 setxunit 1.5 -8 0 SetCamPos 0 0 0 SetCamView -10 10 setxrange3d -3 3 setyrange3d GetCamPos setlightsrc 1.5 setlightintensity 2 setlinejoin .01 setlinewidth /klein { 3 dict begin /v exch def /u exch def #rpn# (2/3)*(Cos(u)*Cos(2*v)+sqrt(2)*Sin(u)*Cos(v))*Cos(u)/(sqrt(2)-Sin(2*u)*Sin(3*v)) #rpn# sqrt(2)*Cos(u)*Cos(u)/(sqrt(2)-Sin(2*u)*Sin(3*v)) #rpn# (2/3)*(Cos(u)*Sin(2*v)-sqrt(2)*Sin(u)*Sin(v))*Cos(u)/(sqrt(2)-Sin(2*u)*Sin(3*v)) end } def .1 setlinewidth gris 0 pi 0 pi [90 dup] {klein} newsurfaceparametree dup videsolid dup [.5 .5] solidputinouthuecolors %dup (.8 setgray) inputcolors drawsolid**