diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-vue3d/pst-vue3d.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-vue3d/pst-vue3d.tex | 1640 |
1 files changed, 0 insertions, 1640 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-vue3d/pst-vue3d.tex b/Master/texmf-dist/tex/generic/pst-vue3d/pst-vue3d.tex deleted file mode 100644 index e6ffa14446a..00000000000 --- a/Master/texmf-dist/tex/generic/pst-vue3d/pst-vue3d.tex +++ /dev/null @@ -1,1640 +0,0 @@ -%% This is file `pst-vue3d.tex', -%% -%% IMPORTANT NOTICE: -%% -%% Package `pst-vue3d.tex' -%% -%% Manuel Luque <Mluque5130@aol.com> (France) -%% Herbert Voss <voss _at_ pstricks.de (Germany) -%% -%% 2008/02/21 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%% DESCRIPTION: -%% `pst-vue3d' is a PSTricks package to define 3d views -%% ChangeLog (at end) -%% -\csname PSTVueTroisDLoaded\endcsname -\let\PSTVueTroisDLoaded\endinput -% Require PSTricks and pst-node packages -\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi -\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi -\ifx\PSTthreeDLoaded\endinput\else\input pst-3d.tex\fi -\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi -% -\def\fileversion{1.24}% -\def\filedate{2008/02/21}% -\message{`pst-vue3d v\fileversion, \filedate\space (ML,hv)}% -\edef\PstAtCode{\the\catcode`\@}\catcode`\@=11\relax -\pst@addfams{pst-vue3d}% for pst-xkey -%%%% -\define@key[psset]{pst-vue3d}{scale}{\def\psk@TroisD@scale{#1}} % echelle -\define@key[psset]{pst-vue3d}{RotX}{\def\psk@TroisD@RotX{#1}} % rotation autour de Ox en degrés -\define@key[psset]{pst-vue3d}{RotY}{\def\psk@TroisD@RotY{#1}} % rotation autour de Oy en degrés -\define@key[psset]{pst-vue3d}{RotZ}{\def\psk@TroisD@RotZ{#1}} % rotation autour de OZ en degrés -\define@key[psset]{pst-vue3d}{A}{\def\psk@TroisD@A{#1}} % double d'une arête du parallèlépipède -\define@key[psset]{pst-vue3d}{B}{\def\psk@TroisD@B{#1}} % double d'une arête du parallèlépipède -\define@key[psset]{pst-vue3d}{C}{\def\psk@TroisD@C{#1}} % double de l'arête du parallèlépipède -\define@key[psset]{pst-vue3d}{Rtetraedre}{\def\psk@TroisD@Rtetraedre{#1}} % Rayon du cercle tétraèdre -\define@key[psset]{pst-vue3d}{ColorFaceA}{\def\psk@TroisD@TetraedreColorFaceA{#1}} % couleur de la face A du tétraèdre -\define@key[psset]{pst-vue3d}{ColorFaceB}{\def\psk@TroisD@TetraedreColorFaceB{#1}} % couleur de la face B du tétraèdre -\define@key[psset]{pst-vue3d}{ColorFaceC}{\def\psk@TroisD@TetraedreColorFaceC{#1}} % couleur de la face C du tétraèdre -\define@key[psset]{pst-vue3d}{ColorFaceD}{\def\psk@TroisD@TetraedreColorFaceD{#1}} % couleur de la face D du tétraèdre -\define@key[psset]{pst-vue3d}{ColorFaceE}{\def\psk@TroisD@TetraedreColorFaceE{#1}} % couleur de la face D du tétraèdre -\define@key[psset]{pst-vue3d}{fracHeight}{\def\psk@TroisD@fracHeight{#1}} % fraction de la hauteur du cone -\define@key[psset]{pst-vue3d}{fracHcone}{\def\psk@TroisD@fracHeight{#1}} % for compatibility -% -\define@key[psset]{pst-vue3d}{normaleLongitude}{\def\psk@TroisD@normaleLongitude{#1}} % coordonnées angulaires de la normale -\define@key[psset]{pst-vue3d}{normaleLatitude}{\def\psk@TroisD@normaleLatitude{#1}} % coordonnées angulaires de la normale -\define@key[psset]{pst-vue3d}{pas}{\def\psk@TroisD@pas{#1}} % en cm résolution du tracé -\define@key[psset]{pst-vue3d}{grille}{\def\psk@TroisD@grille{#1}} % Pas de la grille en cm -% -\define@key[psset]{pst-vue3d}{THETA}{\def\psk@TroisD@Theta{#1}} -\define@key[psset]{pst-vue3d}{PHI}{\def\psk@TroisD@Phi{#1}} -\define@key[psset]{pst-vue3d}{DeltaTHETA}{\def\psk@TroisD@DeltaTheta{#1}} -\define@key[psset]{pst-vue3d}{DeltaPHI}{\def\psk@TroisD@DeltaPhi{#1}} -\define@key[psset]{pst-vue3d}{PortionSphereTHETA}{\def\psk@TroisD@PortionSphereTHETA{#1}} -\define@key[psset]{pst-vue3d}{PortionSpherePHI}{\def\psk@TroisD@PortionSpherePHI{#1}} -\define@key[psset]{pst-vue3d}{PhiCercle}{\def\psk@TroisD@PhiCercle{#1}} -\define@key[psset]{pst-vue3d}{ThetaMeridien}{\def\psk@TroisD@ThetaMeridien{#1}} -\define@key[psset]{pst-vue3d}{Dobs}{\def\psk@TroisD@Dobs{#1}} -\define@key[psset]{pst-vue3d}{Decran}{\def\psk@TroisD@Ecran{#1}} -% -\psset[pst-vue3d]{THETA=30,PHI=10,% - Dobs=100,Decran=10,% - normaleLongitude=45,% - normaleLatitude=45,% - PhiCercle=0,% - ThetaMeridien=0,% - pas=1,% - grille=10,% - scale=1,% - RotX=0,RotY=0,RotZ=0,% - A=10,B=10,C=10,% - Rtetraedre=5,% - ColorFaceD=cyan,ColorFaceA=magenta,ColorFaceB=red,% - ColorFaceC=blue,ColorFaceE=yellow,% - fracHeight=1,% - DeltaTHETA=10,DeltaPHI=10,% - PortionSphereTHETA=0,PortionSpherePHI=0} -% ajout du 28 août 2003 -% colorier au choix les faces du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceOne}{\def\psk@TroisD@CubeColorFaceOne{#1}} % couleur de la face 1 du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceTwo}{\def\psk@TroisD@CubeColorFaceTwo{#1}} % couleur de la face 2 du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceThree}{\def\psk@TroisD@CubeColorFaceThree{#1}} % couleur de la face 3 du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceFour}{\def\psk@TroisD@CubeColorFaceFour{#1}} % couleur de la face 4 du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceFive}{\def\psk@TroisD@CubeColorFaceFive{#1}} % couleur de la face 5 du cube -\define@key[psset]{pst-vue3d}{CubeColorFaceSix}{\def\psk@TroisD@CubeColorFaceSix{#1}} % couleur de la face 6 du cube -\psset[pst-vue3d]{CubeColorFaceOne= 1 1 0 , - CubeColorFaceTwo= 0.9 0.9 0 , - CubeColorFaceThree= 0.8 0.8 0 , - CubeColorFaceFour= 0.7 0.7 0 , - CubeColorFaceFive= 0.6 0.6 0 , - CubeColorFaceSix= 0.5 0.5 0 } -% fin 28 août 2003 -% ajout 27 octobre 2003 -\define@boolkey[psset]{pst-vue3d}[Pst@]{CubeInside}[true]{} -\psset[pst-vue3d]{CubeInside=false} -% hv 2003-12-20 -\define@boolkey[psset]{pst-vue3d}[Pst@]{SphericalCoor}[true]{} -\psset[pst-vue3d]{SphericalCoor=false} -% -\def\variablesTroisD{% - 0 0 translate -% hv 2005-04-30 --->beg - /xUnit \pst@number\psxunit def - /yUnit \pst@number\psyunit def -% hv 2005-04-30 <---end - /reduction \psk@TroisD@scale\space def - /RotX \psk@TroisD@RotX\space def - /RotY \psk@TroisD@RotY\space def - /RotZ \psk@TroisD@RotZ\space def - /A \psk@TroisD@A\space def - /B \psk@TroisD@B\space def - /C \psk@TroisD@C\space def - /RayonBaseTetraedre \psk@TroisD@Rtetraedre\space def - /fracHeight \psk@TroisD@fracHeight\space def - /Rpoint A 4 div def - /nTheta \psk@TroisD@normaleLongitude\space def - /nPhi \psk@TroisD@normaleLatitude\space def - /S1 \psk@TroisD@normaleLongitude\space sin def - /C1 \psk@TroisD@normaleLongitude\space cos def - /S2 \psk@TroisD@normaleLatitude\space sin def - /C2 \psk@TroisD@normaleLatitude\space cos def - /THETA \psk@TroisD@Theta\space def - /PHI \psk@TroisD@Phi\space def - /dTHETA \psk@TroisD@DeltaTheta\space def - /dPHI \psk@TroisD@DeltaPhi\space def - /psTHETA \psk@TroisD@PortionSphereTHETA\space def - /psPHI \psk@TroisD@PortionSpherePHI\space def - /PhiCercle \psk@TroisD@PhiCercle\space def - /ThetaMeridien \psk@TroisD@ThetaMeridien\space def - /Dobs \psk@TroisD@Dobs\space def - /DScreen \psk@TroisD@Ecran\space def - /Sin1 THETA sin def - /Sin2 PHI sin def - /Cos1 THETA cos def - /Cos2 PHI cos def - /Cos1Sin2 Cos1 Sin2 mul def - /Sin1Sin2 Sin1 Sin2 mul def - /Cos1Cos2 Cos1 Cos2 mul def - /Sin1Cos2 Sin1 Cos2 mul def - /XpointVue Dobs Cos1Cos2 mul def - /YpointVue Dobs Sin1Cos2 mul def - /ZpointVue Dobs Sin2 mul def - /M11 RotZ cos RotY cos mul def - /M12 RotZ cos RotY sin mul RotX sin mul - RotZ sin RotX cos mul sub def - /M13 RotZ cos RotY sin mul RotX cos mul - RotZ sin RotX sin mul add def - /M21 RotZ sin RotY cos mul def - /M22 RotZ sin RotY sin RotX sin mul mul - RotZ cos RotX cos mul add def - /M23 RotZ sin RotY sin mul RotX cos mul - RotZ cos RotX sin mul sub def - /M31 RotY sin neg def - /M32 RotX sin RotY cos mul def - /M33 RotX cos RotY cos mul def - }% -% hv 2003-12-20 -% -------------- Utilities ----------------- -\SpecialCoor -\pstheader{pst-vue3d.pro} - -\def\face{% - \pscurve(1;160)(0.8;180)(1;200) - \pscustom{\gsave\psarc(0,0){1}{165}{195} - \pscurve(1;195)(0.85;180)(1;165) - \fill[fillstyle=solid,fillcolor=blue]\grestore} - \pscurve[linewidth=.4pt](1;195)(0.85;180)(1;165) - \bgroup - \psset{linewidth=2pt} - \psarc(0,1){1}{180}{270} - \psarc(0,-1){1}{90}{180} - \egroup - \psarc(0,0){1}{150}{210} - \psset{linewidth=4pt,linecolor=gray}% - \pscurve(-.5,3.5)(-1,3)(-1.2,2.5)(-1.3,2)(-1.4,1)(-1.35,0.5)% - (-1.2,-.2)(-1.35,-.5)(-1.4,-1)(-1.5,-1.5)(-1.8,-2)(-1.8,-2.3)% - (-1.65,-2.5)(-1.35,-2.55)(-.95,-2.8)(-.95,-3.35)(-1,-3.65)(-.8,-4)(-.4,-4.1) - \pscurve(-.8,-4)(-.8,-4.2)(-.5,-4.5)(-.4,-5)(-.25,-5.5)(0,-5.8)(.5,-6)% -} -\def\eye{% - \psarc[linewidth=2pt](0,2.5){2.5}{215}{270}% - \psarc[linewidth=2pt](0,-2.5){2.5}{90}{140}% - \psarc(-2.5,0){1}{-30}{30}% - \psarc(0,0){1.75}{160}{200} - \psclip{\pscircle[linestyle=none](0,0){1.75}} - \pscircle[fillstyle=solid,fillcolor=lightgray](-2.5,0){0.9} - \endpsclip% -} -% -% -------------- Basic Macros -------------- -% -% hv 2003 -\def\AxesThreeD{\pst@object{AxesThreeD}} -\def\AxesThreeD@i{\@ifnextchar({\AxesThreeD@iii}{\AxesThreeD@ii}} -\def\AxesThreeD@ii#1(#2){% - \begingroup - \addto@par{arrows=#1}% - \begin@OpenObj - \AxesThreeD@iv#2,@comma*\relax% -} -\def\AxesThreeD@iii(#1){% - \begingroup - \begin@OpenObj - \AxesThreeD@iv#1,@comma*\relax% -} -% -\def\AxesThreeD@iv#1,#2*{% - \def\@tempa{#2}\def\@tempb{@comma}% - \ifx\@tempa\@tempb% only one value - \AxesThreeD@v#1,#2\else\AxesThreeD@vi#1,#2\relax% - \fi% -} -\def\AxesThreeD@v#1,#2\relax{% - \AxesThreeD@vi#1,#1,#1,#1\relax% -} -\def\AxesThreeD@vi#1,#2,#3,#4\relax{% - \use@par - \pNodeThreeD(0,0,0){Origin}% - \pNodeThreeD(0,0,#3){ZMax}\pNodeThreeD(#1,0,0){XMax}\pNodeThreeD(0,#2,0){YMax}% - \psline(Origin)(ZMax)\psline(Origin)(XMax)\psline(Origin)(YMax)% - \uput[0](ZMax){\small Z}\uput[90](XMax){\small X}\uput[0](YMax){\small Y}% - \end@OpenObj - \endgroup -} -% -% hv 2003 -\def\showCoorThreeD{\pst@object{showCoorThreeD}} -\def\showCoorThreeD@i(#1){{% - \begin@OpenObj - \showCoorThreeD@ii#1,@comma*\relax - \end@OpenObj - }\ignorespaces% -} -\def\showCoorThreeD@ii#1,#2*{% - \def\@tempa{#2}\def\@tempb{@comma}% - \ifx\@tempa\@tempb% - \showCoorThreeD@iii#1;#2\else\showCoorThreeD@iv#1,#2\relax% - \fi% -} -% -\def\showCoorThreeD@iii#1;#2;#3;#4\relax{% - \psline(! - \variablesTroisD - /Radius #1 def - /longitude #2 def - /latitude #3 def - /Zcote Radius latitude sin mul def - /Xabscisse Radius longitude cos mul latitude cos mul def - /Yordonnee Radius longitude sin mul latitude cos mul def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end)(! - /Zcote 0 def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end) - \psline(! - /Zcote 0 def - /Xabscisse Radius longitude cos mul latitude cos mul def - /Yordonnee Radius longitude sin mul latitude cos mul def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end)(! - /Zcote 0 def - /Yordonnee 0 def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end) - \psline(! - /Zcote 0 def - /Xabscisse Radius longitude cos mul latitude cos mul def - /Yordonnee Radius longitude sin mul latitude cos mul def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end)(! - /Zcote 0 def - /Xabscisse 0 def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end) -} -% -\def\showCoorThreeD@iv#1,#2,#3,#4\relax{% -% \qdisk(P){1pt} - \LineThreeD(#1,#2,#3)(#1,#2,0)% - \LineThreeD(#1,#2,0)(#1,0,0)% - \LineThreeD(#1,#2,0)(0,#2,0)% -} -% -% -\def\CubeThreeD{\def\pst@par{}\pst@object{CubeThreeD}} -\def\CubeThreeD@i(#1,#2,#3){{ - \begin@ClosedObj -% \use@par - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - \ifPst@CubeInside /Condition { ge } def \else /Condition { le } def \fi - /CubeColorFaceOne {\psk@TroisD@CubeColorFaceOne} def - /CubeColorFaceTwo {\psk@TroisD@CubeColorFaceTwo} def - /CubeColorFaceThree {\psk@TroisD@CubeColorFaceThree} def - /CubeColorFaceFive {\psk@TroisD@CubeColorFaceFive} def - /CubeColorFaceFour {\psk@TroisD@CubeColorFaceFour} def - /CubeColorFaceSix {\psk@TroisD@CubeColorFaceSix} def - tx@3DDict begin - /Condition1 { PS1 0 le } def - Cube - end - }% fin du code ps - \end@ClosedObj% -}} -% -\def\DieThreeD{\pst@object{DieThreeD}} -\def\DieThreeD@i(#1,#2,#3){{% -% (#2,#3,#4) coordonnées du centre - \begin@ClosedObj - \use@par - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - \ifPst@CubeInside /Condition { ge } def \else /Condition {le } def \fi - /CubeColorFaceOne {\psk@TroisD@CubeColorFaceOne} def - /CubeColorFaceTwo {\psk@TroisD@CubeColorFaceTwo} def - /CubeColorFaceThree {\psk@TroisD@CubeColorFaceThree} def - /CubeColorFaceFive {\psk@TroisD@CubeColorFaceFive} def - /CubeColorFaceFour {\psk@TroisD@CubeColorFaceFour} def - /CubeColorFaceSix {\psk@TroisD@CubeColorFaceSix} def - tx@3DDict begin - Cube - PointsDie - end - }% fin du code ps - \end@ClosedObj% -}} -% -% Dodecahedron : 31 décembre 2003 ml -\def\DodecahedronThreeD{\pst@object{DodecahedronThreeD}} -\def\DodecahedronThreeD@i(#1,#2,#3){{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - /CX #1 def - /CY #2 def - /CZ #3 def - /Condition {le } def - tx@3DDict begin - Dodecahedron - end - }% fin du code ps - \end@ClosedObj% -}} -% -\def\SphereThreeD{\pst@object{SphereThreeD}} -\def\SphereThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordonnées du centre -% #5 rayon - \begin@ClosedObj% - \use@par - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - /increment 10 def - tx@3DDict begin - /condition { PSfacette 0 le } def - /departPhi -90 def - MaillageSphere - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj% -}\ignorespaces} -% % fin de la commande PSTricks -% -% 2décembre 2002 -% -\def\SphereInverseThreeD{\pst@object{SphereInverseThreeD}} -\def\SphereInverseThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordonnées du centre -% #5 rayon - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - /increment 10 def - tx@3DDict begin - /condition {PSfacette 0 ge} def - /departPhi -90 def - MaillageSphere - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj% -}\ignorespaces} -% % fin de la commande PSTricks -% fin 2 décembre 2002 -% -\def\SphereCercleThreeD{\pst@object{SphereCercleThreeD}} -\def\SphereCercleThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordonnées du centre -% #5 rayon - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - tx@3DDict begin - 0 2 360 { - /ThetaEquateur exch def - /Xpoint Rsphere ThetaEquateur cos mul PhiCercle cos mul def - /Ypoint Rsphere ThetaEquateur sin mul PhiCercle cos mul def - /Zpoint Rsphere PhiCercle sin mul def - CalculsPointsAfterTransformations -% rayon de las sphère (normale) - /nXfacette Xabscisse CX sub def - /nYfacette Yordonnee CY sub def - /nZfacette Zcote CZ sub def -% rayon vers point de vue - /RXvue Xabscisse XpointVue sub def - /RYvue Yordonnee YpointVue sub def - /RZvue Zcote ZpointVue sub def -% test de visibilité - /PSPoint RXvue nXfacette mul - RYvue nYfacette mul add - RZvue nZfacette mul add - def - PSPoint 0 le { - newpath - CalcCoordinates - 0.5 0 360 arc - closepath - fill - } if -%lineto - } for - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj% -}\ignorespaces} -% -% -\def\SphereMeridienThreeD{\pst@object{SphereMeridienThreeD}} -\def\SphereMeridienThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordonnées du centre -% #5 rayon - \begin@ClosedObj% - \use@par - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - tx@3DDict begin - 0 2 360 { - /PhiCercle exch def - /Xpoint Rsphere ThetaMeridien cos mul PhiCercle cos mul def - /Ypoint Rsphere ThetaMeridien sin mul PhiCercle cos mul def - /Zpoint Rsphere PhiCercle sin mul def - CalculsPointsAfterTransformations -% rayon de las sphère (normale) - /nXfacette Xabscisse CX sub def - /nYfacette Yordonnee CY sub def - /nZfacette Zcote CZ sub def -% rayon vers point de vue - /RXvue Xabscisse XpointVue sub def - /RYvue Yordonnee YpointVue sub def - /RZvue Zcote ZpointVue sub def -% test de visibilité - /PSPoint RXvue nXfacette mul - RYvue nYfacette mul add - RZvue nZfacette mul add - def - PSPoint 0 le{ - newpath - CalcCoordinates - 0.5 0 360 arc - closepath - fill - } if - %lineto - } for - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj% -}\ignorespaces} -% -\def\CylindreThreeD{\pst@object{CylindreThreeD}} -\def\CylindreThreeD@i(#1,#2,#3)#4#5{{% -% Le centre de la base sera placé avec -% (#2,#3,#4) les paramètres CX,CY et CZ -% #5 rayon -% #6 hauteur -% on peut ensuite faire tourner le cylindre -% avec RotX, RotY et RotZ - \begin@ClosedObj - \use@par - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rcylindre #4 def - /Hcylindre #5 def - /incrementANGLE 10 def - /incrementHAUTEUR Hcylindre 5 div def - tx@3DDict begin - CylinderThreeD - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj -}\ignorespaces}% % fin de la commande PSTricks -% -% hv 2003-12-18 -\def\LineThreeD{\pst@object{LineThreeD}} -\def\LineThreeD@i(#1,#2,#3)(#4,#5,#6){{% -% (#2,#3,#4) coordonnées du point1 -% (#5,#6,#7) coordonnées du point2 - \begin@OpenObj - \pNodeThreeD(#1,#2,#3){tempNodeA} - \pNodeThreeD(#4,#5,#6){tempNodeB} - \psline(tempNodeA)(tempNodeB) - \end@OpenObj -}\ignorespaces} -% -% hv 2003-12-17 -\def\pNodeThreeD{\pst@object{pNodeThreeD}} -% point can be in cartesian (x,y,z) or sphere coordinates (r;phi;theta) -\def\pNodeThreeD@i(#1)#2{{% - \begin@ClosedObj - \edef\@NodeNameThreeD{#2} - \pNodeThreeD@ii#1,@comma*\relax - \end@ClosedObj - }\ignorespaces% -} -\def\pNodeThreeD@ii#1,#2*{% - \def\@tempa{#2}\def\@tempb{@comma}% - \ifx\@tempa\@tempb% - \pNodeThreeD@iii#1;#2\else\pNodeThreeD@iv#1,#2\relax% - \fi% -} -\def\pNodeThreeD@iii#1;#2;#3;#4\relax{% - \pnode(! - \variablesTroisD - /Radius #1 def - /longitude #2 def - /latitude #3 def - /Zcote Radius latitude sin mul def - /Xabscisse Radius longitude cos mul latitude cos mul def - /Yordonnee Radius longitude sin mul latitude cos mul def - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end){\@NodeNameThreeD} -} -\def\pNodeThreeD@iv#1,#2,#3,#4\relax{% - \pnode(! - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /Zcote Radius latitude sin mul def - /Xabscisse Radius longitude cos mul latitude cos mul def - /Yordonnee Radius longitude sin mul latitude cos mul def - \else - /Zcote #3 def - /Xabscisse #1 def - /Yordonnee #2 def - \fi - tx@3DDict begin - formulesTroisD - Xi reduction mul Yi reduction mul - end){\@NodeNameThreeD}% -} -% - -\iffalse -% hv 2005-12-04 -\def\pnodeThreeD{\pst@object{pnodeThreeD}} -\def\pnodeThreeD@i(#1,#2,#3)#4{% - \pst@killglue - \begingroup - \use@par - \pnode(! - \psk@embedangle - \psk@viewpoint - \psk@viewangle - \tx@SetMatrixThreeD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - Radius longitude cos mul latitude cos mul % x - Radius longitude sin mul latitude cos mul % y - Radius latitude sin mul % z - \else - #1 #2 #3 - \fi - \tx@ProjThreeD){#4}% - \endgroup} -% -\let\pNodeThreeD\pnodeThreeD -\fi -% -\def\TetraedreThreeD{\pst@object{TetraedreThreeD}} -\def\TetraedreThreeD@i(#1,#2,#3){{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - tx@3DDict begin - Tetraedre - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -% -% pyramide -% -\def\FaceSAB{\pst@object{FaceSAB}} -\def\FaceSAB@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSAB 0 le { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XS 1 fracHeight sub XA XS sub mul add def - /Yordonnee YS 1 fracHeight sub YA YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - moveto - /Xabscisse XA def - /Yordonnee YA def - /Zcote ZA def - CalcCoordinates - lineto - /Xabscisse XB def - /Yordonnee YB def - /Zcote ZB def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XB XS sub mul add def - /Yordonnee YS 1 fracHeight sub YB YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -\def\FaceSBC{\pst@object{FaceSBC}} -\def\FaceSBC@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSBC 0 le { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XS 1 fracHeight sub XB XS sub mul add def - /Yordonnee YS 1 fracHeight sub YB YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - moveto - /Xabscisse XB def - /Yordonnee YB def - /Zcote ZB def - CalcCoordinates - lineto - /Xabscisse XC def - /Yordonnee YC def - /Zcote ZC def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XC XS sub mul add def - /Yordonnee YS 1 fracHeight sub YC YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -% -\def\FaceSCD{\pst@object{FaceSCD}} -\def\FaceSCD@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSCD 0 le { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XS 1 fracHeight sub XC XS sub mul add def - /Yordonnee YS 1 fracHeight sub YC YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - moveto - /Xabscisse XC def - /Yordonnee YC def - /Zcote ZC def - CalcCoordinates - lineto - /Xabscisse XD def - /Yordonnee YD def - /Zcote ZD def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XD XS sub mul add def - /Yordonnee YS 1 fracHeight sub YD YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -\def\FaceSDA{\pst@object{FaceSDA}} -\def\FaceSDA@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSDA 0 le { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XS 1 fracHeight sub XD XS sub mul add def - /Yordonnee YS 1 fracHeight sub YD YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - moveto - /Xabscisse XD def - /Yordonnee YD def - /Zcote ZD def - CalcCoordinates - lineto - /Xabscisse XA def - /Yordonnee YA def - /Zcote ZA def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XA XS sub mul add def - /Yordonnee YS 1 fracHeight sub YA YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -\def\FaceABCD{\pst@object{FaceABCD}} -\def\FaceABCD@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSABCD 0 le { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XA def - /Yordonnee YA def - /Zcote ZA def - CalcCoordinates - moveto - /Xabscisse XB def - /Yordonnee YB def - /Zcote ZB def - CalcCoordinates - lineto - /Xabscisse XC def - /Yordonnee YC def - /Zcote ZC def - CalcCoordinates - lineto - /Xabscisse XD def - /Yordonnee YD def - /Zcote ZD def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -% hv 2003 -\def\FaceABCDTop{\pst@object{FaceABCDTop}} -\def\FaceABCDTop@i(#1,#2,#3)#4{{% - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Hpyramide #4 def - tx@3DDict begin - SommetsPyramide - PSABCD 0 gt { % - reduction reduction scale - newpath - 1 setlinejoin - /Xabscisse XS 1 fracHeight sub XD XS sub mul add def - /Yordonnee YS 1 fracHeight sub YD YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - moveto - /Xabscisse XS 1 fracHeight sub XA XS sub mul add def - /Yordonnee YS 1 fracHeight sub YA YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XB XS sub mul add def - /Yordonnee YS 1 fracHeight sub YB YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - /Xabscisse XS 1 fracHeight sub XC XS sub mul add def - /Yordonnee YS 1 fracHeight sub YC YS sub mul add def - /Zcote ZS CZ sub fracHeight mul CZ add def - CalcCoordinates - lineto - closepath - } if - end - }% fin du code ps - \end@ClosedObj -}\ignorespaces} -% -\def\PyramideThreeD{\@ifnextchar[{\PyramideThreeD@i}{\PyramideThreeD@i[]}} -% (#2,#3,#4) the coordinates of the origin -% #5 the height of the pyrimide -\def\PyramideThreeD@i[#1](#2,#3,#4)#5{{% - \FaceSAB[fillcolor=\psk@TroisD@TetraedreColorFaceA,#1](#2,#3,#4){#5}% - \FaceSBC[fillcolor=\psk@TroisD@TetraedreColorFaceB,#1](#2,#3,#4){#5}% - \FaceSCD[fillcolor=\psk@TroisD@TetraedreColorFaceC,#1](#2,#3,#4){#5}% - \FaceSDA[fillcolor=\psk@TroisD@TetraedreColorFaceD,#1](#2,#3,#4){#5}% - \FaceABCD[fillcolor=\psk@TroisD@TetraedreColorFaceE,#1](#2,#3,#4){#5}% - \FaceABCDTop[fillcolor=\psk@TroisD@TetraedreColorFaceE,#1](#2,#3,#4){#5}% -}\ignorespaces} -% -% -\def\ConeThreeD{\pst@object{ConeThreeD}} -\def\ConeThreeD@i(#1,#2,#3)#4#5{% -% Le centre de la base sera placé avec -% (#2,#3,#4) les paramètres CX,CY et CZ -% #5 rayon -% #6 hauteur -% on peut ensuite faire tourner le cylindre -% avec RotX, RotY et RotZ - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rcone #4 def - /Hcone #5 def - tx@3DDict begin - ConeThreeD - end - }% fin du code ps - \showpointsfalse - \end@ClosedObj -\ignorespaces}% -% -\def\CircleThreeD{\pst@object{CircleThreeD}} -\def\CircleThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) les paramètres CX,CY et CZ -% #5 rayon du cercle - \begin@ClosedObj - \addto@pscode{% - /Rcercle #4 def - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - tx@3DDict begin - reduction reduction scale - /TableauxPoints [ - 0 1 360 {% on décrit le cercle - /Angle exch def [ - /Xcercle Rcercle Angle cos mul def - /Ycercle Rcercle Angle sin mul def - /Xabscisse Xcercle S1 mul Ycercle S2 C1 mul mul add CX add def - /Yordonnee Xcercle C1 mul neg Ycercle S2 S1 mul mul add CY add def - /Zcote Ycercle C2 mul neg CZ add def - CalcCoordinates ] - } for - ] def - TableauxPoints 0 get aload pop moveto - 0 1 360 { - /compteur exch def - TableauxPoints compteur get aload pop - lineto } for - end - }% fin du code ps - \showpointsfalse - \end@ClosedObj -}\ignorespaces} -% -% -\def\FrameThreeD{\pst@object{FrameThreeD}} -\def\FrameThreeD@i(#1,#2,#3)(#4,#5)(#6,#7){{% -% (#2,#3,#4) the origin -% (#5,#6) d'un sommet -% (#7,#8) du sommet opposé -% rectangle ABCD - \begin@ClosedObj - \addto@pscode{% - /XA #4 def - /YA #5 def - /XC #6 def - /YC #7 def -% on en déduit les autres sommets - /XB XC def - /YB YA def - /XD XA def - /YD YC def - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - tx@3DDict begin - reduction reduction scale - newpath - /Xframe XA def - /Yframe YA def - /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def - /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def - /Zcote Yframe C2 mul neg CZ add def - CalcCoordinates - moveto - /Xframe XB def - /Yframe YB def - /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def - /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def - /Zcote Yframe C2 mul neg CZ add def - CalcCoordinates - lineto - /Xframe XC def - /Yframe YC def - /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def - /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def - /Zcote Yframe C2 mul neg CZ add def - CalcCoordinates - lineto - /Xframe XD def - /Yframe YD def - /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def - /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def - /Zcote Yframe C2 mul neg CZ add def - CalcCoordinates - lineto - /Xframe XA def - /Yframe YA def - /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def - /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def - /Zcote Yframe C2 mul neg CZ add def - CalcCoordinates - lineto - closepath - end - }% fin du code ps - \showpointsfalse - \end@ClosedObj -}\ignorespaces}% % fin de la commande PSTricks -% -% -\def\QuadrillageThreeD{\pst@object{QuadrillageThreeD}} -\def\QuadrillageThreeD@i(#1,#2,#3)(#4,#5)(#6,#7){{% - \begin@OpenObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - /Xmin #4 def - /Xmax #6 def - /Ymin #5 def - /Ymax #7 def - /pas \psk@TroisD@pas\space def - /grille \psk@TroisD@grille\space def - tx@3DDict begin - reduction reduction scale - Ymin grille Ymax {% balayage suivant Oy - /Ygrille exch def - /TableauxPoints [ - Xmin pas Xmax { % balayage suivant Ox - /Xgrille exch def - /Xabscisse Xgrille S1 mul Ygrille S2 C1 mul mul add CX add def - /Yordonnee Xgrille C1 mul neg Ygrille S2 S1 mul mul add CY add def - /Zcote Ygrille C2 mul neg CZ add def - formulesTroisD - [ Xi 28.45 mul Yi 28.45 mul ] - } for - ] def - TableauxPoints 0 get aload pop moveto - 0 1 Xmax Xmin sub pas div { - /compteur exch def - TableauxPoints compteur get aload pop - lineto - } for -% stroke - } for -% - Xmin grille Xmax {% balayage suivant Ox - /Xgrille exch def - /TableauxPoints [ - Ymin pas Ymax { % balayage suivant Ox - /Ygrille exch def - /Xabscisse Xgrille S1 mul Ygrille S2 C1 mul mul add CX add def - /Yordonnee Xgrille C1 mul neg Ygrille S2 S1 mul mul add CY add def - /Zcote Ygrille C2 mul neg CZ add def - formulesTroisD - [ Xi 28.45 mul Yi 28.45 mul ] - } for - ] def - TableauxPoints 0 get aload pop moveto - 0 1 Ymax Ymin sub pas div { - /compteur exch def - TableauxPoints compteur get aload pop - lineto - } for - \pst@number\pslinewidth SLW - \pst@usecolor\pslinecolor - \@nameuse{psls@\pslinestyle} -% stroke - } for -% fin du tracé - end - }% fin du code ps - \end@OpenObj -}\ignorespaces}% % fin de la commande PSTricks -% -\newif\ifPstThreeDplot@showInside -\define@key[psset]{pst-vue3d}{showInside}[true]{\@nameuse{PstThreeDplot@showInside@#1}} -\define@key[psset]{pst-vue3d}{SegmentColor}{\pst@getcolor{#1}\psk@ThreeDplot@SegmentColor} -\define@key[psset]{pst-vue3d}{increment}{\pst@getint{#1}\psk@ThreeDplot@increment} -\psset[pst-vue3d]{showInside,SegmentColor={[cmyk]{0.2,0.6,1,0}},increment=10} -% -\def\ParaboloidThreeD{\pst@object{ParaboloidThreeD}} -\def\ParaboloidThreeD@i#1#2{% -\begin@SpecialObj% -\addto@pscode{% - \psk@embedangle - \psk@viewpoint - \psk@viewangle - \tx@SetMatrixThreeD -% Vecteur ViewPoint - \psk@viewpoint - /vZ ED - /vY ED - /vX ED - /increment \psk@ThreeDplot@increment\space def - /height #1 def - /radius #2 #1 sqrt div def - /cmyk {} def - 1 setlinejoin - % les rayons de lumière - /xLight 1 def - /yLight 0.1 def - /zLight 0.2 def - % précision du tracé - /pas 0.5 def - /pas10 {pas 10 div} bind def -% - /NormeLight {xLight dup mul yLight dup mul zLight dup mul add add sqrt} bind def -% l'ellipse du plan de coupe : le contour - /calculate2DPoint { % four values on stack; x2D y2D are returned - /V0 ED /Z0 ED /U20 ED /U10 ED - U10 cos V0 mul radius mul \pst@number\psunit mul - U20 sin V0 mul radius mul \pst@number\psunit mul - Z0 \pst@number\psunit mul \tx@ProjThreeD - } def - /PlanCoupe { - /Z height store - /V {Z sqrt} bind def - /TableauxPoints [ - 0 1 359 { - /U exch def [ U U Z V caclculate2DPoint ] % on décrit le cercle - } for - ] def - newpath - TableauxPoints 0 get aload pop moveto - 0 1 359 { - /compteur exch def - TableauxPoints compteur get aload pop - lineto } for - closepath - } def -% - /facette { - newpath - U U Z V calculate2DPoint moveto - U 1 U increment add {% - /U1 exch def - U1 U1 Z V calculate2DPoint lineto - } for - Z pas10 Z pas add pas10 add{ - /Z1 exch def - /V {Z1 sqrt} bind def - U1 U1 Z1 V calculate2DPoint lineto - } for - U increment add -1 U {% - /U2 exch def - U2 U2 Z pas add V calculate2DPoint lineto - } for - Z pas add pas10 sub pas10 neg Z pas10 sub{ - /Z2 exch def - /V {Z2 abs sqrt} bind def - U U Z2 V calculate2DPoint lineto - } for - closepath - } def % facette -% - /MaillageParaboloid { - 0 pas height pas sub{% - /Z ED - /V {Z sqrt} bind def - 0 increment 360 increment sub {% - /U exch def -% Centre de la facette - /Ucentre {U increment 2 div add} bind def - /Vcentre {Z pas 2 div add sqrt} bind def -% normale à la facette - /nXfacette {2 Vcentre dup mul mul Ucentre cos mul radius mul} bind def - /nYfacette {2 Vcentre dup mul mul Ucentre sin mul radius mul} bind def - /nZfacette {Vcentre neg radius dup mul mul} bind def - /NormeN { - nXfacette dup mul - nYfacette dup mul - nZfacette dup mul - add add sqrt} bind def - NormeN 0 eq {/NormeN 1e-10 def} if -% test de visibilité - /PSfacette vX nXfacette mul - vY nYfacette mul add - vZ nZfacette mul add def - condition { - facette - /cosV {1 xLight nXfacette mul - yLight nYfacette mul - zLight nZfacette mul - add add - NormeLight - NormeN mul div sub} bind def - \psk@ThreeDplot@SegmentColor\space - cosV mul 4 1 roll cosV mul 4 1 roll cosV dup mul mul 4 1 roll cosV dup mul mul 4 1 roll - setcmykcolor fill - 0 setgray - facette - stroke - } if - } for - } for - } def - /conditionGE {PSfacette 0 ge} def - /conditionLE {PSfacette 0 le} def - \ifPstThreeDplot@showInside - /condition {conditionGE} def - MaillageParaboloid - vZ 0 ge {% - PlanCoupe 1 0.5 0.5 setrgbcolor fill - PlanCoupe 0 setgray stroke} if - \else - /condition {conditionLE} def - MaillageParaboloid - /condition {conditionGE} def - MaillageParaboloid% - \fi -} -% fin du code ps -\showpointsfalse -\end@SpecialObj} -% -% -% 11 novembre -\def\DemiSphereThreeD{\pst@object{DemiSphereThreeD}} -\def\DemiSphereThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordinates of the center -% #5 rayon - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - /increment 10 def - tx@3DDict begin - /condition { PSfacette 0 le } def - /departPhi 0 def - MaillageSphere -% centre de la base inférieure après transformations - /CxFaceInf CX def - /CyFaceInf CY def - /CzFaceInf CZ def -% correction 16 novembre 2002 -% /Xpoint CxFaceInf def -% /Ypoint CyFaceInf def -% /Zpoint CzFaceInf def - /Xpoint 0 def - /Ypoint 0 def - /Zpoint 0 def -% fin correction 16/11/2002 - CalculsPointsAfterTransformations - /CxBaseInf Xabscisse def - /CyBaseInf Yordonnee def - /CzBaseInf Zcote def - /RXvueInf CxBaseInf XpointVue sub def - /RYvueInf CyBaseInf YpointVue sub def - /RZvueInf CzBaseInf ZpointVue sub def -% Sommet de la sphère - /Xpoint 0 def - /Ypoint 0 def - /Zpoint Rsphere def - CalculsPointsAfterTransformations - /XsommetSphere Xabscisse def - /YsommetSphere Yordonnee def - /ZsommetSphere Zcote def -% 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 le { - /TableauxPoints [ - 0 1 359 {% on décrit le cercle - /theta exch def [ - /Xpoint Rsphere theta cos mul def - /Ypoint Rsphere theta sin mul def - /Zpoint 0 def - CalculsPointsAfterTransformations - CalcCoordinates ] - } for - ] def - gsave - newpath - TableauxPoints 0 get aload pop moveto - 0 1 359 { - /compteur exch def - TableauxPoints compteur get aload pop - lineto - } for - 0.7 setgray - closepath - fill - grestore - } if - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj -}\ignorespaces}% % fin de la commande PSTricks -% -% -\def\SphereCreuseThreeD{\pst@object{SphereCreuseThreeD}} -\def\SphereCreuseThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordinates of the center -% #5 rayon - \begin@ClosedObj - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - /increment 10 def - tx@3DDict begin - /SphereInside { - /condition {PSfacette 0 ge} def - /departPhi 0 def - MaillageSphere - } def -%% centre de la base inférieure après transformations - /CxFaceInf CX def - /CyFaceInf CY def - /CzFaceInf CZ def - /Xpoint CxFaceInf def - /Ypoint CyFaceInf def - /Zpoint CzFaceInf def - CalculsPointsAfterTransformations - /CxBaseInf Xabscisse def - /CyBaseInf Yordonnee def - /CzBaseInf Zcote def - /RXvueInf CxBaseInf XpointVue sub def - /RYvueInf CyBaseInf YpointVue sub def - /RZvueInf CzBaseInf ZpointVue sub def -% Sommet de la sphère - /Xpoint 0 def - /Ypoint 0 def - /Zpoint Rsphere def - CalculsPointsAfterTransformations - /XsommetSphere Xabscisse def - /YsommetSphere Yordonnee def - /ZsommetSphere Zcote def -% 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 - /base { - /TableauxPoints [ - 0 1 359 {% on décrit le cercle - /theta exch def [ - /Xpoint Rsphere theta cos mul def - /Ypoint Rsphere theta sin mul def - /Zpoint 0 def - CalculsPointsAfterTransformations - CalcCoordinates ] - } for - ] def -% gsave - newpath - TableauxPoints 0 get aload pop moveto - 0 1 359 { - /compteur exch def - TableauxPoints compteur get aload pop - lineto } for - 0.7 setgray - closepath -% stroke -%grestore - } def - PSbaseSphere 0 le { - base - clip - SphereInside - }{ 0 0 0.01 0 360 arc } ifelse - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj -}\ignorespaces}% % fin de la commande PSTricks -% -% 30 novembre 2002 -% révisé le 30 octobre 2003 -\def\PortionSphereThreeD{\pst@object{PortionSphereThreeD}} -\def\PortionSphereThreeD@i(#1,#2,#3)#4{{% -% (#2,#3,#4) coordinates of the center -% #5 rayon - \begin@ClosedObj% - \addto@pscode{% - \variablesTroisD - \ifPst@SphericalCoor - /Radius #1 def - /longitude #2 def - /latitude #3 def - /CZ Radius latitude sin mul def - /CX Radius longitude cos mul latitude cos mul def - /CY Radius longitude sin mul latitude cos mul def - \else - /CX #1 def - /CY #2 def - /CZ #3 def - \fi - reduction reduction scale - /Rsphere #4 def - /increment 1 def -% /increment 2.5 def - tx@3DDict begin - PortionSphere - end - }% fin du code ps - \showpointsfalse% - \end@ClosedObj% -}\ignorespaces}% % fin de la commande PSTricks -% -\catcode`\@=\PstAtCode\relax -% -%% END: pst-vue3D.tex -\endinput - |