%% d'apres un code original de Juergen Gild %% http://melusine.eu.org/lab/bpst/pst-solides3d/kepler/ex_27.pst -1 1 setxrange -1 1 setyrange 200 setxunit 50 -20 30 SetCamPos 0 0 0 SetCamView %/ScreenDist .3 def -10 10 setxrange3d -3 3 setyrange3d 2 setlinejoin .1 setlinewidth /aretescachees false def GetCamPos setlightsrc %solidgridOff %% psset{lightsrc=55 15 45,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} %% \begin{pspicture}(-4,-6)(8,6) %% \codejps{ /Paleblue {0.8 0.8 1 setrgbcolor} def /Gray1 {0.1 setgray} def /Gray2 {0.2 setgray} def /Gray3 {0.3 setgray} def /Gray4 {0.4 setgray} def /Gray5 {0.5 setgray} def /Gray6 {0.6 setgray} def /Gray7 {0.7 setgray} def /Gray8 {0.8 setgray} def /Gray9 {0.9 setgray} def /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}def /LimeGreen{0.50 0 1 0 setcmykcolor}def /MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}def /Emerald{1 0 0.50 0 setcmykcolor}def /BlueGreen{0.85 0 0.33 0 setcmykcolor}def /ProcessBlue{0.96 0 0 0 setcmykcolor}def /Turquoise{0.85 0 0.20 0 setcmykcolor}def /Aquamarine{0.82 0 0.30 0 setcmykcolor}def /Green{1 0 1 0 setcmykcolor}def /Yellow{0 0 1 0 setcmykcolor}def /Blue{1 1 0 0 setcmykcolor}def %% syntaxe : A solid i dessinefacevisible /dessinefacevisible { 8 dict begin /i exch def /solid exch def /A exch def solid issolid not { (Error : mauvais type d argument dans dessinefacevisible) == quit } if /F solid solidgetfaces def /S solid solidgetsommets def solid i solidfacevisible? { /n F i get length def %% nb de sommets de la face startest { %% choix de la couleur /lightcolor where { pop /coeff lightintensity solid i solidnormaleface normalize3d solid i solidcentreface lightsrc vecteur3d normalize3d scalprod3d mul 0 max 1 min def /fillstyle { lightcolor {coeff mul} apply setcolor fill } def solidgrid not { lightcolor {coeff mul} apply setcolor } if } { /lightsrc where { pop /coeff lightintensity solid i solidnormaleface normalize3d solid i solidcentreface lightsrc vecteur3d normalize3d scalprod3d mul 0 max 1 min def /lacouleur [ gsave solid solidgetfcolors i get cvx exec currentrgbcolor grestore ] def /fillstyle { lacouleur {coeff mul} apply setcolor fill } def solidgrid not { lacouleur {coeff mul} apply setcolor } if } { % solid F i get length affectecouleursolid_ncotes solid i affectecouleursolid_facei } ifelse } ifelse } if /face_a_dessiner [ %% face visible : F [i] 0 1 n 1 sub { /j exch def solid j i solidgetsommetface } for ] def gsave i 3097 ge i 3222 le and { lacouleur {coeff mul} apply setcolor } if face_a_dessiner polygone3d grestore } if end } def %% 3097-3222 %% % %% .001 setlinewidth %% % /sph1 {% 6 -90 0 [24 72] newcalottespherecreuse dup (LimeGreen) outputcolors dup (Gray8) inputcolors } def % /cub1 {% 6 newcube dup 0.9 solidaffine dup videsolid dup (BlueViolet) outputcolors dup (Gray7) inputcolors } def % /sph2 {% 3 -90 0 [12 36] newcalottespherecreuse dup (Emerald) outputcolors dup (Gray7) inputcolors } def % /tet1 {% 3 newtetraedre dup 0.9 solidaffine dup videsolid dup (MidnightBlue) outputcolors dup (Gray7) inputcolors } def % /sph3 {% 1.5 -90 0 [12 36] newcalottespherecreuse dup (BlueGreen) outputcolors dup (Gray6) inputcolors } def % /dod1 {% 1.3 newdodecaedre dup 0.9 solidaffine dup videsolid dup (ProcessBlue) outputcolors dup (Gray8) inputcolors } def % /sph4 {% 0.85 -90 0 [6 18] newcalottespherecreuse dup (Turquoise) outputcolors dup (Gray5) inputcolors } def % /ico1 {% 0.7 newicosaedre dup 0.8 solidaffine dup videsolid dup (Aquamarine) outputcolors dup (Gray8) inputcolors } def % /sph5 {% 0.5 -90 0 [6 18] newcalottespherecreuse dup (ProcessBlue) outputcolors dup (Gray4) inputcolors } def % /tet2 {% 0.4 newoctaedre dup 0.8 solidaffine dup videsolid dup (Green) outputcolors dup (Gray4) inputcolors } def % /sph6 {% 0.2 -90 0 [6 18] newcalottespherecreuse dup (Blue) outputcolors dup (blanc) inputcolors } def % /sph7 {% 0.125 [6 18] newsphere dup (Yellow) outputcolors dup (blanc) inputcolors } def % sph1 cub1 solidfuz sph2 solidfuz tet1 solidfuz sph3 solidfuz dod1 solidfuz sph4 solidfuz ico1 solidfuz sph5 solidfuz tet2 solidfuz sph6 solidfuz sph7 solidfuz drawsolid**