diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-14 19:41:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-14 19:41:50 +0000 |
commit | 33d655a1e6d73f28a58b8ef484baa8607ed14530 (patch) | |
tree | 8df80b9dbb55893eb17a0eae4eefcfecacec2def /Master/texmf-dist/tex/generic/pst-3dplot | |
parent | 6a8e4cf500d3b7bcb972313c3393d70c4696c36b (diff) |
pst-3dplot 1.82 (13nov08)
git-svn-id: svn://tug.org/texlive/trunk@11300 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-3dplot')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex | 200 |
1 files changed, 147 insertions, 53 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex b/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex index dd95147cee3..f5616fdd09c 100644 --- a/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex +++ b/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex @@ -1,4 +1,4 @@ -%% $Id: pst-3dplot.tex 9 2008-01-03 20:22:50Z herbert $ +%% $Id: pst-3dplot.tex 50 2008-11-12 13:44:21Z herbert $ %% %% This is file `pst-3dplot.tex', %% @@ -25,8 +25,8 @@ \ifx\PSTricksAddLoaded\endinput\else\input pstricks-add.tex\fi% loads node and plot \ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi % -\def\fileversion{1.80} -\def\filedate{2008/02/08} +\def\fileversion{1.82} +\def\filedate{2008/11/12} \message{`PST-3dplot' v\fileversion, \filedate\space (HV,DL)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -177,6 +177,7 @@ \edef\psk@ThreeDplot@invisibleLineStyle{#1}} % \define@boolkey[psset]{pst-3dplot}[Pst@]{IIIDticks}[true]{} +\define@boolkey[psset]{pst-3dplot}[Pst@]{IIIDlabels}[true]{} \define@key[psset]{pst-3dplot}{Dz}{\def\psk@Dz{#1}} \define@key[psset]{pst-3dplot}{IIIDxTicksPlane}{\def\psk@IIIDxTicksPlane{#1}} \define@key[psset]{pst-3dplot}{IIIDyTicksPlane}{\def\psk@IIIDyTicksPlane{#1}} @@ -194,7 +195,7 @@ % % ### begin Torsten Suhling \define@key[psset]{pst-3dplot}{planecorr}{\def\psk@ThreeDplot@planecorr{#1}}% make plane tags readable -\def\ThreeDplot@planecorrOff{off} % default +\def\ThreeDplot@planecorrNone{none} % default \def\ThreeDplot@planecorrNormal{normal} % make planes readable \def\ThreeDplot@planecorrXYrot{xyrot} % and put tag for xy-plane % % parallel to the y-axis @@ -260,9 +261,9 @@ visibleLineStyle=solid,invisibleLineStyle=dashed,nameX=$x$,spotX=180, nameY=$y$,spotY=0,nameZ=$z$,spotZ=90,plane=xy,pOrigin=c, drawCoor=false,SphericalCoor=false, CylindricalCoor=false, - Dz=1,IIIDticks=false,IIIDxTicksPlane=xy,IIIDyTicksPlane=yz,IIIDzTicksPlane=yz, + Dz=1,IIIDticks=false,IIIDlabels=false,IIIDxTicksPlane=xy,IIIDyTicksPlane=yz,IIIDzTicksPlane=yz, IIIDticksize=0.1,IIIDxticksep=-0.4,IIIDyticksep=-0.2,IIIDzticksep=0.2, - planecorr=off, + planecorr=none, planeGrid=xy,planeGridOffset=0,%subticks=10, leftHanded=false,coorType=0,IIIDdAlpha=0, xyzLight=1 1 2,showInside=true,SegmentColor={[cmyk]{0.2,0.6,1,0}},increment=10 @@ -271,7 +272,7 @@ } \setIIIDplotDefaults % -\def\variablesIIID{ +\def\IIIDplot@variables{ /RotX \psk@ThreeD@RotX\space def /RotY \psk@ThreeD@RotY\space def /RotZ \psk@ThreeD@RotZ\space def @@ -329,6 +330,7 @@ \let#6\pst@getValueY% \let#7\pst@getValueZ% } +% \def\pst@calcThreeDVec(#1,#2,#3)(#4,#5,#6){{% #1+#4; #2+#5; #3+#6 \pst@dima=#1 pt% \pst@dimb=#2 pt% @@ -385,17 +387,18 @@ \pstPlanePut[plane=\psk@IIIDxTicksPlane]% (\rB,\psk@IIIDxticksep,0){\psxyzlabel{\rA}}% }% - \pst@dimx=\psk@ThreeDplot@xMin\p@% - \pst@dima=\psk@ThreeDplot@xThreeDunit\p@% - \divide\pst@dimx by \pst@dima% - \ifdim\psk@ThreeDplot@xMin pt<\p@ \pst@cntx=-\number\pst@dimx% - \else\pst@cntx=\number\pst@dimx\fi% - \multido{\rA=-\psk@Dx+-\psk@Dx,% - \rB=-\psk@ThreeDplot@xThreeDunit+-\psk@ThreeDplot@xThreeDunit}{\pst@cntx}{% - \pstThreeDLine[arrows=-](\rB,-\psk@IIIDticksize,0)(\rB,\psk@IIIDticksize,0)% - \pstPlanePut[plane=\psk@IIIDxTicksPlane](\rB,\psk@IIIDxticksep,0){\psxyzlabel{\rA}}% - }% -% \fi% + \pst@dimx=\psk@ThreeDplot@xMin\p@% + \pst@dima=\psk@ThreeDplot@xThreeDunit\p@% + \divide\pst@dimx by \pst@dima% + \ifdim\psk@ThreeDplot@xMin pt<\p@ \pst@cntx=-\number\pst@dimx% + \else\pst@cntx=\number\pst@dimx\fi% + \multido{\rA=-\psk@Dx+-\psk@Dx,% + \rB=-\psk@ThreeDplot@xThreeDunit+-\psk@ThreeDplot@xThreeDunit}{\pst@cntx}{% + \pstThreeDLine[arrows=-](\rB,-\psk@IIIDticksize,0)(\rB,\psk@IIIDticksize,0)% + \ifPst@IIIDlabels% + \pstPlanePut[plane=\psk@IIIDxTicksPlane](\rB,\psk@IIIDxticksep,0){\psxyzlabel{\rA}}% + \fi% + }% % \ifnum\psk@ThreeDplot@Alpha=0\else \pst@dimy=\psk@ThreeDplot@yMax\p@% \pst@dima=\psk@ThreeDplot@yThreeDunit\p@% @@ -404,7 +407,9 @@ \pst@cnty=\number\pst@dimy\advance\pst@cnty by -1% \mmultido{\rA=0.0+\psk@Dy,\rB=0.0+\psk@ThreeDplot@yThreeDunit}{\pst@cnty}{% \pstThreeDLine[arrows=-](-\psk@IIIDticksize,\rB,0)(\psk@IIIDticksize,\rB,0)% - \pstPlanePut[plane=\psk@IIIDyTicksPlane](\psk@IIIDyticksep,\rB,0){\psxyzlabel{\rA}}% + \ifPst@IIIDlabels% + \pstPlanePut[plane=\psk@IIIDyTicksPlane](\psk@IIIDyticksep,\rB,0){\psxyzlabel{\rA}}% + \fi% }% \pst@dimy=\psk@ThreeDplot@yMin\p@% \pst@dima=\psk@ThreeDplot@yThreeDunit\p@% @@ -415,7 +420,9 @@ \multido{\rA=-\psk@Dy+-\psk@Dy,% \rB=-\psk@ThreeDplot@yThreeDunit+-\psk@ThreeDplot@yThreeDunit}{\pst@cnty}{% \pstThreeDLine[arrows=-](-\psk@IIIDticksize,\rB,0)(\psk@IIIDticksize,\rB,0)% - \pstPlanePut[plane=\psk@IIIDyTicksPlane](\psk@IIIDyticksep,\rB,0){\psxyzlabel{\rA}}% + \ifPst@IIIDlabels% + \pstPlanePut[plane=\psk@IIIDyTicksPlane](\psk@IIIDyticksep,\rB,0){\psxyzlabel{\rA}}% + \fi }% % \fi% \pst@dimz=\psk@ThreeDplot@zMax\p@% @@ -424,7 +431,9 @@ \pst@cntz=\number\pst@dimz\advance\pst@cntz by -1% \mmultido{\rA=0.0+\psk@Dz,\rB=0.0+\psk@ThreeDplot@zThreeDunit}{\pst@cntz}{% \pstThreeDLine[arrows=-](0,-\psk@IIIDticksize,\rB)(0,\psk@IIIDticksize,\rB)% - \pstPlanePut[plane=\psk@IIIDzTicksPlane](0,\psk@IIIDzticksep,\rB){\psxyzlabel{\rA}}% + \ifPst@IIIDlabels% + \pstPlanePut[plane=\psk@IIIDzTicksPlane](0,\psk@IIIDzticksep,\rB){\psxyzlabel{\rA}}% + \fi% }% \pst@dimz=\psk@ThreeDplot@zMin\p@% \pst@dima=\psk@ThreeDplot@zThreeDunit\p@% @@ -436,7 +445,9 @@ \multido{\rA=-\psk@Dz+-\psk@Dz,% \rB=-\psk@ThreeDplot@zThreeDunit+-\psk@ThreeDplot@zThreeDunit}{\pst@cntz}{% \pstThreeDLine[arrows=-](0,-\psk@IIIDticksize,\rB)(0,\psk@IIIDticksize,\rB)% - \pstPlanePut[plane=\psk@IIIDzTicksPlane](0,\psk@IIIDzticksep,\rB){\psxyzlabel{\rA}}% + \ifPst@IIIDlabels% + \pstPlanePut[plane=\psk@IIIDzTicksPlane](0,\psk@IIIDzticksep,\rB){\psxyzlabel{\rA}}% + \fi% }% \fi\fi% \endgroup% @@ -496,6 +507,31 @@ \fi% }\ignorespaces} % +% transform the 3d coordinates of the point (#1,#2,#3) +% into a 2d and moveto +% +\def\pstThreeDmoveto{\pst@object{pstThreeDmoveto}} +\def\pstThreeDmoveto@i(#1,#2,#3){% + \pst@killglue + \begingroup + \addto@pscode{ + \pst@3ddict + \IIIDplot@variables + #1 #2 #3 + \ifPst@SphericalCoor + ConvertToCartesian + \else + \psk@ThreeDplot@zThreeDunit\space mul /z ED + \psk@ThreeDplot@yThreeDunit\space mul /y ED + \psk@ThreeDplot@xThreeDunit\space mul /x ED + \fi + ConvertTo2D x2D y2D end moveto }% + \use@pscode + \def\pst@par{}% + \endgroup +\ignorespaces} +% +% % put anything at (#2,#3,#4) % \def\pstThreeDPut{\@ifnextchar[{\pst@ThreeDPut}{\pst@ThreeDPut[]}} @@ -534,7 +570,7 @@ \def\lineIIID@ii{% \addto@pscode{% \pst@3ddict - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin /dxUnit \psk@ThreeDplot@xThreeDunit\space def /dyUnit \psk@ThreeDplot@yThreeDunit\space def @@ -565,7 +601,7 @@ \psset{style=showCoorStyle} \addto@pscode{ \pst@3ddict - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin \pst@tempThreeDDot \ifPst@SphericalCoor @@ -619,7 +655,7 @@ \def\pst@tempThreeDNode{#1 #2 #3 }% \pnode(! \pst@3ddict - \variablesIIID + \IIIDplot@variables \pst@tempThreeDNode \ifPst@SphericalCoor ConvertToCartesian @@ -648,7 +684,7 @@ \getThreeDCoor{#5}\pst@tempE \pnode(!% \pst@3ddict - \variablesIIID + \IIIDplot@variables % #1 #2 % a + r vec(m) % #3 #4 #5 % b + s vec(u) + s vec(v) [\pst@tempA] [\pst@tempC] % x11 x21 x31 x12 x22 x32 @@ -677,7 +713,7 @@ \def\pst@UThreeDPut[#1](#2,#3,#4)#5{{% \uput[#1](!% \pst@3ddict - \variablesIIID + \IIIDplot@variables \ifPst@SphericalCoor #2\space #3\space #4\space ConvertToCartesian @@ -710,7 +746,7 @@ \begin@ClosedObj \addto@pscode{% \pst@3ddict - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin /P1 { \pst@tempAA } def % x y z or Radius longitude lattitude /P2 { \pst@tempBB } def % @@ -772,9 +808,9 @@ \getThreeDCoor{#2}\pst@tempBB \getThreeDCoor{#3}\pst@tempCC \begin@ClosedObj - \addto@pscode{% + \addto@pscode{ \pst@3ddict - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin /P1 { \pst@tempAA } def % x y z or Radius longitude lattitude /P2 { \pst@tempBB } def % @@ -818,7 +854,7 @@ \begingroup% \psset{linestyle=\psk@ThreeDplot@invisibleLineStyle}% \psset{#1}% -% \pstVerb{ \pst@3ddict \variablesIIID\space end }% +% \pstVerb{ \pst@3ddict \IIIDplot@variables\space end }% \iftrue \pstThreeDSquare[#1](#2)(#4)(#5) % lower square \pstThreeDSquare(#2)(#3)(#4)% back square @@ -871,7 +907,7 @@ \getThreeDCoor{#2}\pst@tempA% a \getThreeDCoor{#3}\pst@tempB% b \addto@pscode{% - \pst@3ddict \variablesIIID end + \pst@3ddict \IIIDplot@variables end \psk@ThreeDplot@linejoin setlinejoin \ifPst@SphericalCoor \pst@tempC\space \tx@ConvertToCartesian @@ -944,9 +980,67 @@ }% \@nameuse{endplot@\psplotstyle}} % -\def\pstThreeDCircle{\pstThreeDEllipse} -\def\pstThreeDPlotFunc{\psplotThreeD}% only for compatibility +\def\pstThreeDCircle{\pst@object{pstThreeDCircle}} +\def\pstThreeDCircle@i(#1)(#2)(#3){% (vec O)(vec a)(vec b) + \addbefore@par{plotstyle=curve}% + \@nameuse{beginplot@\psplotstyle}% + \getThreeDCoor{#1}\pst@tempC% center + \getThreeDCoor{#2}\pst@tempA% a + \getThreeDCoor{#3}\pst@tempB% b + \addto@pscode{% + \pst@3ddict \IIIDplot@variables end + \psk@ThreeDplot@linejoin setlinejoin + \ifPst@SphericalCoor + \pst@tempC\space \tx@ConvertToCartesian + /zM \tx@Z def /yM \tx@Y def /xM \tx@X def % center + \pst@tempA\space \tx@ConvertToCartesian + /zA \tx@Z def /yA \tx@Y def /xA \tx@X def % a + \pst@tempB\space \tx@ConvertToCartesian + /zB \tx@Z def /yB \tx@Y def /xB \tx@X def % b + \else + \pst@tempC\space /zM ED /yM ED /xM ED % center + \pst@tempA\space /zA ED /yA ED /xA ED % a + \pst@tempB\space /zB ED /yB ED /xB ED % b + \fi +% build the orthogonal part of B to vec A + \pst@3ddict + /vecA [xA yA zA] vector-length def + /vecB [xB yB zB] vector-length def + [xA yA zA] [xB yB zB] vector-mul vecA div vecB div % is cos(alpha) + vecB mul % is |b_parallelA| + [xA yA zA] vector-unit exch vector-scale % is b_parallelA + [xB yB zB] exch vector-sub % is b-bparallelA=b_orthA + dup vector-length vecA exch div vector-scale % is b_orthA with |a| + aload pop + /zB ED /yB ED /xB ED + /vecB [xB yB zB] vector-length def + end + /aStart \psk@ThreeDplot@beginAngle\space def + /aEnd \psk@ThreeDplot@endAngle\space def + /da aEnd aStart sub \psk@plotpoints\space div def + /xyz { + \pst@3ddict % +% +% the angle in the parameter equation is not proportional to the real angle! +% phi=atan(b*tan(angle)/a)+floor(angle/180+0.5)*180 +% + /phi angle cvi 90 mod 0 eq { angle } { vecA angle tan mul vecB atan + angle 180 div .5 add floor 180 mul add } ifelse def + xM xA phi cos mul add xB phi sin mul add + yM yA phi cos mul add yB phi sin mul add + zM zA phi cos mul add zB phi sin mul add + saveCoor ConvertTo2D + x2D \pst@number\psxunit mul y2D \pst@number\psyunit mul end + } def + /angle aStart def + }% + \gdef\psplot@init{}% + \@pstfalse% + \@nameuse{testqp@\psplotstyle}% + \if@pst\pstThreeDEllipse@ii\else\pstThreeDEllipse@iii\fi% + \ignorespaces} % +\def\pstThreeDPlotFunc{\psplotThreeD}% only for compatibility % % cone[options](center)(radiusA vec)(radiusB vec){height} % @@ -960,7 +1054,7 @@ \getThreeDCoor{#3}\pst@tempC% \addto@pscode{ \pst@3ddict - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin /xUnit { \pst@number\psxunit\space mul } def /yUnit { \pst@number\psyunit\space mul } def @@ -988,7 +1082,7 @@ \def\pst@ThreeDplot@ThetaZ{#6}% rotating angle \pnode(!% \pst@3ddict - \variablesIIID + \IIIDplot@variables \ifPst@SphericalCoor #1\space #2\space #3\space ConvertToCartesian @@ -1030,7 +1124,7 @@ 0 viewpoint 0 \tx@SetMatrixThreeD viewpoint \pst@3ddict /vZ ED /vY ED /vX ED - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin /pas 0.5 def /pas10 pas 10 div def @@ -1097,7 +1191,7 @@ \psk@ThreeDplot@increment\space /cmyk {} def % we need only the values \psk@ThreeDplot@SegmentColor\space - tx@3DPlotDict begin \variablesIIID MaillageSphere end + tx@3DPlotDict begin \IIIDplot@variables MaillageSphere end }% fin du code ps \showpointsfalse% \end@SpecialObj% @@ -1109,7 +1203,7 @@ \let\pst@parOrig\pst@par \begin@ClosedObj \addto@pscode{% - \pst@3ddict \variablesIIID end + \pst@3ddict \IIIDplot@variables end \psk@ThreeDplot@linejoin setlinejoin /POrig { #1 #2 #3 \ifPst@CylindricalCoor \tx@ConvCylToCartesian \fi @@ -1127,7 +1221,7 @@ \let\pst@par\pst@parOrig \begin@SpecialObj \addto@pscode{% - \pst@3ddict \variablesIIID end + \pst@3ddict \IIIDplot@variables end \psk@ThreeDplot@linejoin setlinejoin /POrig { #1 #2 #3 \ifPst@CylindricalCoor \tx@ConvCylToCartesian \fi @@ -1148,7 +1242,7 @@ \let\pst@par\pst@parOrig \begin@ClosedObj \addto@pscode{% - \pst@3ddict \variablesIIID end + \pst@3ddict \IIIDplot@variables end \psk@ThreeDplot@linejoin setlinejoin /POrig { #1 #2 #3 #5 add \ifPst@CylindricalCoor \tx@ConvCylToCartesian \fi @@ -1193,7 +1287,7 @@ 0 viewpoint 0 \tx@SetMatrixThreeD viewpoint \pst@3ddict /vZ ED /vY ED /vX ED - \variablesIIID end + \IIIDplot@variables end \psk@ThreeDplot@linejoin setlinejoin % #1 #2 #3 \ifPst@CylindricalCoor \tx@ConvCylToCartesian \fi @@ -1256,7 +1350,7 @@ viewpoint \tx@3DPlotDict /vZ ED /vY ED /vX ED - \variablesIIID + \IIIDplot@variables \psk@ThreeDplot@linejoin setlinejoin % #1 #2 #3 @@ -1321,7 +1415,7 @@ \@nameuse{testqp@\psplotstyle}% \if@pst% lines and dots \addto@pscode{ - \variablesIIID + \IIIDplot@variables /func { #5 } def \ifPst@algebraic /Func ( #5 ) tx@addDict begin AlgParser end cvx def \fi /xMin #1 def @@ -1346,7 +1440,7 @@ \ifPst@hiddenLine\pscustom[style=hiddenStyle]{\fi% \@nameuse{beginplot@\psplotstyle}% \addto@pscode{ - \variablesIIID + \IIIDplot@variables /func { #5 } def \ifPst@algebraic /Func ( #5 ) tx@addDict begin AlgParser end cvx def \fi /xMin #1 def @@ -1417,7 +1511,7 @@ \@nameuse{testqp@\psplotstyle}% \if@pst% lines and dots \addto@pscode{% - \variablesIIID + \IIIDplot@variables /func { #5 } def \ifPst@algebraic /Func (#5) tx@addDict begin AlgParser end cvx def \fi /x #1 def @@ -1442,7 +1536,7 @@ \ifPst@hiddenLine\pscustom[style=hiddenStyle]{\fi \@nameuse{beginplot@\psplotstyle}% \addto@pscode{% - \variablesIIID + \IIIDplot@variables /func { #5 } def \ifPst@algebraic /Func (#5) tx@addDict begin AlgParser end cvx def \fi /yMin #3 def @@ -1520,7 +1614,7 @@ \ifPst@Debug\typeout{===>Quick plot}\fi \def\pslinetype{0}% \addto@pscode{% - \variablesIIID + \IIIDplot@variables \ifPst@algebraic /Func (#5) tx@addDict begin AlgParser end cvx def \fi /tMin #1 def /t tMin def @@ -1545,7 +1639,7 @@ \multido{\n@Y=0+1}{\psk@ThreeDplot@yPlotpoints}{% \@nameuse{beginplot@\psplotstyle}% \addto@pscode{% - \variablesIIID + \IIIDplot@variables \ifPst@algebraic /Func (#5) tx@addDict begin AlgParser end cvx def \fi /tMin #1 def /t tMin def @@ -1641,7 +1735,7 @@ \def\dataplotThreeD@ii#1{% \@nameuse{beginplot@\psplotstyle}% \addto@pscode{% - \variablesIIID + \IIIDplot@variables /Dx { /D { Dy } def } def /Dy { /D { Dz } def } def /Dz { % now we have x y z @@ -1679,7 +1773,7 @@ \def\listplotThreeD@i#1{\listplotThreeD@ii{\addto@pscode{#1}}} \def\listplotThreeD@ii#1{% \@nameuse{beginplot@\psplotstyle}% - \addto@pscode{ \variablesIIID /D {} def mark }% + \addto@pscode{ \IIIDplot@variables /D {} def mark }% #1% \addto@pscode{\tx@ScalePointsThreeD}% \@nameuse{endplot@\psplotstyle}% @@ -1720,7 +1814,7 @@ % \kern\wd\pst@hbox% \pst@Verb{% { [ 1 0 - \variablesIIID + \IIIDplot@variables % % ### begin Torsten Suhling % ------------------------------------------------------------------------ @@ -1753,7 +1847,7 @@ % 255 < 0 -Beta -Beta Beta Beta % 345 < 0 -Beta -Beta Beta Beta % ================================================================ - \ifx\psk@ThreeDplot@planecorr\ThreeDplot@planecorrOff + \ifx\psk@ThreeDplot@planecorr\ThreeDplot@planecorrNone /SignFlag 1 def /AlphaOffset 0 \psk@IIIDdAlpha add def \else% |