\makeatletter \pstheader{sphereII.pro} \define@key[psset]{pst-V3D}{unitgrid}{\def\psk@IIID@unitgrid{#1}} % pas du maillage \psset[pst-V3D]{unitgrid=10} \define@key[psset]{pst-V3D}{startlatitude}{\def\psk@IIID@startlatitude{#1}} % angle de départ \psset[pst-V3D]{startlatitude=0} \define@key[psset]{pst-V3D}{sepTheta}{\def\pst@VIIID@sepTheta{#1}} % décalage des méridiens \psset[pst-V3D]{sepTheta=0}% \def\psCapSphere{\pst@object{psCapSphere}} \def\psCapSphere@i(#1,#2,#3)#4{{% % (#1,#2,#3) coordinates of the center % #4 rayon \begin@ClosedObj \use@par \addto@pscode{% 1 setlinejoin \tx@parametresIIID /sepTheta \pst@VIIID@sepTheta\space def /CX #1 def /CY #2 def /CZ #3 def /Rsphere #4 def /increment \psk@IIID@unitgrid\space def /condition {PSfacette 0 ge} def /departPhi \psk@IIID@startlatitude\space def /colorBase H_S def % centre de la base inférieure après transformations /CxFaceInf #1 def /CyFaceInf #2 def /CzFaceInf #3 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 MaillageSphereII /Xpoint departPhi cos #4 mul def /Ypoint 0 def /Zpoint departPhi sin #4 mul def PointsApresTransformations /CzBaseInf ED /CyBaseInf ED /CxBaseInf ED /RXvueInf XpointVue CxBaseInf sub def /RYvueInf YpointVue CyBaseInf sub def /RZvueInf ZpointVue CzBaseInf sub def % Sommet de la sphère /Xpoint 0 def /Ypoint 0 def /Zpoint Rsphere def PointsApresTransformations /ZsommetSphere ED /YsommetSphere ED /XsommetSphere ED % Normale extérieure à la base inférieure /nXBaseInf CxFaceInf XsommetSphere sub def /nYBaseInf CyFaceInf YsommetSphere sub def /nZBaseInf CzFaceInf ZsommetSphere sub def % Visibilité de la base inférieure /PSbaseSphere nXBaseInf RXvueInf mul nYBaseInf RYvueInf mul add nZBaseInf RZvueInf mul add def PSbaseSphere 0 ge { /TableauxPoints [ 0 1 359 {% on décrit le cercle /theta exch def [ /Xpoint Rsphere theta cos mul departPhi cos mul def /Ypoint Rsphere theta sin mul departPhi cos mul def /Zpoint Rsphere departPhi sin mul def PointsApresTransformations 3dto2d ] } for ] def /BASE{ newpath TableauxPoints 0 get aload pop moveto 0 1 359 { /compteur exch def TableauxPoints compteur get aload pop lineto } for closepath} def gsave BASE H_S 1 sethsbcolor fill grestore gsave BASE 0 setgray stroke grestore } if }% fin du code ps \showpointsfalse \end@ClosedObj }}% % fin de la commande PSTricks \makeatother