\makeatletter \pstheader{cone.pro} \define@key[psset]{pst-V3D}{A}{\def\psk@IIID@A{#1}} \define@key[psset]{pst-V3D}{fracHeight}{\edef\psk@IIID@fracHeight{#1}} % fraction de la hauteur du cone \psset[pst-V3D]{fracHeight=1} \define@key[psset]{pst-V3D}{nF}{\def\pst@VIIID@nF{#1}} % nombre de facettes > 20 \define@key[psset]{pst-V3D}{nH}{\def\pst@VIIID@nH{#1}} % nombre de mailles en hauteur \psset[pst-V3D]{nF=20,nH=5} \def\psCone{\pst@object{psCone}} \def\psCone@i(#1,#2,#3)#4#5{{%{{% \begin@ClosedObj \use@par \addto@pscode{% 1 setlinejoin \tx@parametresIIID ConeDict begin /CX #1 def /CY #2 def /CZ #3 def /Rcone #4 def /Hcone #5 def /AngleCone Rcone Hcone atan def /TanAngleCone AngleCone dup sin exch cos div def /fracHeight \psk@IIID@fracHeight\space def /incrementANGLE {360 \pst@VIIID@nF\space div} bind def /incrementHAUTEUR #5 fracHeight mul \pst@VIIID@nH\space div def /PointsApresTransformations{% 3 dict begin M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add end } def /condition {PSfacette 0 ge} def /ChangeSigne {1 mul} def cone Bases \ifPst@interior H_S exch /h ED /s ED /ChangeSigne { -1 mul } def /H_S { h dup mul s 2 div } def /condition {PSfacette 0 le} def PSbaseSupCone 0 ge { gsave FaceSup clip cone %FaceSup %0 setgray stroke grestore } if PSbaseInfCone 0 ge { FaceInf clip cone %FaceInf %0 setgray stroke } if \else PSbaseSupCone 0 ge { gsave FaceSup H_S 1 sethsbcolor fill %FaceSup %0 setgray stroke grestore } if PSbaseInfCone 0 ge { FaceInf H_S 1 sethsbcolor fill FaceInf 0 setgray stroke } if \fi end }% fin du code ps \end@ClosedObj% }} \makeatother