From 5d15743e4114b97824c00eaa61eab488ba52b233 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 20 Aug 2007 00:09:19 +0000 Subject: pst-3dplot 1.75 (18aug07) git-svn-id: svn://tug.org/texlive/trunk@4766 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-3dplot/Changes | 8 + Master/texmf-dist/doc/generic/pst-3dplot/README | 8 +- .../doc/generic/pst-3dplot/pst-3dplot-doc.bib | 16 +- .../doc/generic/pst-3dplot/pst-3dplot-doc.pdf | Bin 1377937 -> 2275318 bytes .../doc/generic/pst-3dplot/pst-3dplot-doc.tex | 352 +++++++++++---- .../doc/generic/pst-3dplot/tb72voss3d.pdf | Bin 542949 -> 0 bytes Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro | 322 +++++++++++++- .../texmf-dist/source/generic/pst-3dplot/Makefile | 48 -- .../tex/generic/pst-3dplot/pst-3dplot.tex | 488 +++++++++++---------- .../texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty | 8 - 10 files changed, 856 insertions(+), 394 deletions(-) delete mode 100644 Master/texmf-dist/doc/generic/pst-3dplot/tb72voss3d.pdf delete mode 100644 Master/texmf-dist/source/generic/pst-3dplot/Makefile delete mode 100644 Master/texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/Changes b/Master/texmf-dist/doc/generic/pst-3dplot/Changes index 24ad9f5145f..8ed258675e5 100644 --- a/Master/texmf-dist/doc/generic/pst-3dplot/Changes +++ b/Master/texmf-dist/doc/generic/pst-3dplot/Changes @@ -1,4 +1,7 @@ pst-3dplot.pro -------- +0.23 2007-08-18 - add coorType 0,1,2 code for convertTo2D + - add code IIIDCylinder and cylindrical coordinates + - add code for \psBox and \psCylinder 0.22 2006-01-11 add code for left-Handed coor (experimental) 0.21 2005-10-10 add code for 3D sphere 0.20 2005-01-14 add rotPoint subroutine with RotSequenz option @@ -6,9 +9,14 @@ pst-3dplot.pro -------- pst-3dplot.tex -------- +1.75 2007-08-18 - add optional argument coorType for different + types of coordinates + - add \psCylinder and \psBox with inside/outside view + - fix bug with the subticks option 1.74 2007-06-12 - fix bug with the optional argument of plane - fix typo for pstParaboloid - add macro pstIIIDCylinder + - add cylindrical coordinates - revert Changes to the hidden line support 1.73 2007-02-12 better support for hidden lines of a box 1.72 2006-02-07 - allow negative direction for ellipse diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/README b/Master/texmf-dist/doc/generic/pst-3dplot/README index 01b1ff9c915..3e48431a5eb 100644 --- a/Master/texmf-dist/doc/generic/pst-3dplot/README +++ b/Master/texmf-dist/doc/generic/pst-3dplot/README @@ -2,7 +2,7 @@ %% %% Herbert Voss (Germany) %% -%% 2007-06-17 +%% 2004-12-04 %% PSTricks offers excellent macros to insert more or less complex @@ -26,14 +26,14 @@ pst-3dplot uses the extended version of the keyval package. So be sure that you - have installed xkeyval with the special pst-xkey (CTAN: tex-archive/macros/latex/contrib/xkeyval/) -- do not load another package behind pst-3dplot, which loads +- do not load another package after pst-3dplot, which loads the old keyval.sty or pst-key.tex If you like to get the documentation file in another format run latex pst-3dplot-doc.tex -bibtex pst-3dplot.doc +bibtex pst-3dplot-doc latex pst-3dplot-doc.tex dvips pst-3dplot-doc.dvi @@ -44,5 +44,5 @@ latex on the documentation file. The intermediate DVI file works only with viewers which can interprete the embedded PostScript code. -For another PDF output read the Introduction from +For another PDF output read the introduction from the documentation. diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.bib b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.bib index 3b785845e22..6d51864b381 100644 --- a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.bib +++ b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.bib @@ -99,14 +99,12 @@ gezeigt. } } - @Book{companion, - author = {Michel Goosens and Frank Mittelbach and Alexander - Samarin}, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Vo{\ss}}, title = {The {\LaTeX} {G}raphics {C}ompanion}, publisher = {{Addison-Wesley Publishing Company}}, - year = {2004}, - edition = {2.}, + edition = second, + year = {2007}, address = {Reading, Mass.} } @@ -127,3 +125,11 @@ address = {Poing} } +@Book{LaTeXRef, + author = {Herbert Vo\ss}, + title = {\LaTeX\ Referenz}, + edition = {1.}, + publisher = {DANTE -- Lehmanns}, + year = {2007}, + address = {Heidelberg/Hamburg} +} diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.pdf b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.pdf index 9f53681952b..5affd88cc37 100644 Binary files a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.pdf and b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.tex b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.tex index b3af53cb325..ea88c16703f 100644 --- a/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-3dplot/pst-3dplot-doc.tex @@ -450,14 +450,19 @@ \end{filecontents} + +\usepackage{ccfonts} +\usepackage[euler-digits]{eulervm} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} +\usepackage[scaled=0.85]{luximono} \usepackage{amsmath} \usepackage{graphicx} -\usepackage{geometry,lmodern} +\usepackage{geometry} \usepackage{pstricks} \usepackage{pst-grad} \usepackage{showexpl} +\usepackage{tabularx} \lstset{wide=true} \usepackage{pst-3dplot} \let\myFV\fileversion @@ -478,8 +483,9 @@ \makeatother \def\Lcs#1{{\ttfamily\textbackslash #1}} \lfoot{\small\ttfamily\jobname.tex} -\cfoot{} +\cfoot{Documentation} \rfoot{\thepage} +\lhead{PSTricks}% package \texttt{pst-3dplot}} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} \let\myPart\part @@ -518,6 +524,7 @@ It is also important that after \verb+pst-3dplot+ no package is loaded, which us \clearpage \section{The Parallel projection} +%\psset{coorType=1} Figure \ref{Abb0-1} shows a point $P(x,y,z)$ in a three dimensional coordinate system ($x,y,z$) with a transformation into $P^*(x^*,y^*)$, the Point in the two dimensional system ($x_E,y_E$). @@ -886,6 +893,35 @@ The following example shows a wrong placing of the labels, the planes should be \end{pspicture} \end{LTXexample} + +\subsection{Experimental features} +All features are as long as they are not really tested called experimental. With the optional +argument \texttt{coorType}, which is by default 0, one can change the the viewing of the axes +and all other three dimensional objects. + +With \texttt{coorType=1} the y--z-axes are orthogonal and the angle between x- and y-axis +is \texttt{Alpha}. The angle \texttt{Beta} is not valid. + +\begin{LTXexample}[width=9.75cm] +\psset{coorType=1,Alpha=135} +\begin{pspicture}(-2,-3)(3,3) +\pstThreeDCoor[IIIDticks,zMax=3]% +\end{pspicture} +\end{LTXexample} + +With \texttt{coorType=2} the y--z-axes are orthogonal and the angle between x- and y-axis +is always 135 degrees and the x-axis is shortened by a factor of $1/\sqrt{2}$. +The angle \texttt{Alpha} is only valid for placing the ticks, if any. The angle \texttt{Beta} is not valid. + +\begin{LTXexample}[width=9.75cm] +\psset{coorType=2,Alpha=90, + IIIDxTicksPlane=yz} +\begin{pspicture}(-2,-2)(3,3) +\pstThreeDCoor[IIIDticks,zMax=3]% +\end{pspicture} +\end{LTXexample} + +\clearpage \section{Rotation} The coordinate system can be rotated independent from the given Alpha and Beta values. This makes it possible to place @@ -900,6 +936,7 @@ additional one for the rotating sequence, which can be any combination of the th \end{pspicture} \end{LTXexample} + \begin{LTXexample}[pos=t] \psset{unit=2,linewidth=1.5pt,drawCoor=false} \begin{pspicture}(-2,-1.5)(2,2.5)% @@ -921,6 +958,7 @@ additional one for the rotating sequence, which can be any combination of the th \end{pspicture}% \end{LTXexample} + \begin{LTXexample}[pos=t] \begin{pspicture}(-2,-1.5)(2,2.5)% \pstThreeDCoor[xMin=0,xMax=2,yMin=0,yMax=2,zMin=0,zMax=2]% @@ -934,6 +972,7 @@ additional one for the rotating sequence, which can be any combination of the th +\clearpage \psset{unit=1cm,gridlabels=7pt} @@ -943,27 +982,52 @@ additional one for the rotating sequence, which can be any combination of the th \end{verbatim} There are three additional options -\begin{description} -\item[planeGrid] can be one of the following values: \verb+xy, xz, yz+. Default is \verb+xy+. -\item[subticks] Number of ticks. Default is \verb+10+.\footnote{This options is also defined -in the package \texttt{pstricks-add}, so it is nessecary to to set this option -locally or with the family option of \texttt{pst-xkey}} -\item[planeGridOffset] a length for the shift of the grid. Default is \verb+0+. -\end{description} +\noindent +\begin{tabularx}{\linewidth}{@{}>{\bfseries\ttfamily}lX@{}} +planeGrid & can be one of the following values: \verb+xy, xz, yz+. Default is \verb+xy+.\\ +subticks & Number of ticks. Default is \verb+10+.\footnotemark \\ +planeGridOffset & a length for the shift of the grid. Default is \verb+0+. +\end{tabularx} + +\footnotetext{This options is also defined +in the package \texttt{pstricks-add}, so it is nessecary to to set this option +locally or with the family option of \texttt{pst-xkey}, eg \CMD{psset[pst-3dplot]\{subticks=...\}}} This macro is a special one for the coordinate system to show the units, but can be used in any way. \verb+subticks+ defines the number of ticklines for both axes and \verb+xsubticks+ and \verb+ysubticks+ for each one. -\begin{LTXexample}[pos=t] -\begin{pspicture}(-5,-5)(5,6.5) - \pstThreeDCoor[xMin=0,yMin=0,zMin=0,xMax=7,yMax=7,zMax=7,linewidth=2pt] +\iffalse +\newpsstyle{xyPlane}{fillstyle=solid,fillcolor=black!20} +\newpsstyle{xzPlane}{fillstyle=solid,fillcolor=black!35,planeGrid=xz} +\newpsstyle{yzPlane}{fillstyle=solid,fillcolor=black!50,planeGrid=yz} +\fi + +\noindent +\begin{minipage}{0.49\linewidth} +\begin{LTXexample}[pos=t,wide=false] +\begin{pspicture}(-4,-3.5)(5,4) + \pstThreeDCoor[xMin=0,yMin=0,zMin=0,linewidth=2pt] \psset{linewidth=0.1pt,linecolor=lightgray} - \pstThreeDPlaneGrid(0,0)(7,7) - \pstThreeDPlaneGrid[planeGrid=xz](0,0)(7,7) - \pstThreeDPlaneGrid[planeGrid=yz](0,0)(7,7) + \pstThreeDPlaneGrid(0,0)(4,4) + \pstThreeDPlaneGrid[planeGrid=xz](0,0)(4,4) + \pstThreeDPlaneGrid[planeGrid=yz](0,0)(4,4) +\end{pspicture} +\end{LTXexample} +\end{minipage}\hfill +\begin{minipage}{0.49\linewidth} +\begin{LTXexample}[pos=t,wide=false] +\begin{pspicture}(-3,-3.5)(5,4) + \psset{coorType=2}% set it globally! + \pstThreeDCoor[xMin=0,yMin=0,zMin=0,linewidth=2pt] + \psset{linewidth=0.1pt,linecolor=lightgray} + \pstThreeDPlaneGrid(0,0)(4,4) + \pstThreeDPlaneGrid[planeGrid=xz](0,0)(4,4) + \pstThreeDPlaneGrid[planeGrid=yz](0,0)(4,4) \end{pspicture} \end{LTXexample} +\end{minipage} + \begin{LTXexample}[pos=t] \begin{pspicture}(-1,-2)(10,10) @@ -973,20 +1037,15 @@ be used in any way. \verb+subticks+ defines the number of ticklines for both axe \pstThreeDPlaneGrid(0,0)(7,7) \pstThreeDPlaneGrid[planeGrid=xz,planeGridOffset=7](0,0)(7,7) \pstThreeDPlaneGrid[planeGrid=yz](0,0)(7,7) - \pscustom[linewidth=0.1pt,fillstyle=gradient,gradbegin=gray,gradmidpoint=0.5,plotstyle=curve]{ + \pscustom[linewidth=0.1pt,fillstyle=gradient,gradbegin=gray,gradmidpoint=0.5,plotstyle=curve]{% \psset{xPlotpoints=200,yPlotpoints=1} - \psplotThreeD(0,7)(0,0){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(0,7)(0,0){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines} - \psplotThreeD(7,7)(0,7){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(7,7)(0,7){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=200,yPlotpoints=1,drawStyle=xLines} - \psplotThreeD(7,0)(7,7){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(7,0)(7,7){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines} - \psplotThreeD(0,0)(7,0){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } - } + \psplotThreeD(0,0)(7,0){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div }} \pstThreeDPlaneGrid[planeGrid=yz,planeGridOffset=7](0,0)(7,7) \end{pspicture} \end{LTXexample} @@ -1000,20 +1059,16 @@ be used in any way. \verb+subticks+ defines the number of ticklines for both axe \pstThreeDPlaneGrid(0,0)(7,7) \pstThreeDPlaneGrid[planeGrid=xz](0,0)(7,7) \pstThreeDPlaneGrid[planeGrid=yz](0,0)(7,7) - \pscustom[linewidth=0.1pt,fillstyle=gradient,gradbegin=gray,gradend=white,gradmidpoint=0.5,plotstyle=curve]{ + \pscustom[linewidth=0.1pt,fillstyle=gradient,gradbegin=gray,gradend=white,gradmidpoint=0.5, + plotstyle=curve]{% \psset{xPlotpoints=200,yPlotpoints=1} - \psplotThreeD(0,7)(0,0){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(0,7)(0,0){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines} - \psplotThreeD(7,7)(0,7){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(7,7)(0,7){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=200,yPlotpoints=1,drawStyle=xLines} - \psplotThreeD(7,0)(7,7){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } + \psplotThreeD(7,0)(7,7){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } \psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines} - \psplotThreeD(0,0)(7,0){% - x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div } - } + \psplotThreeD(0,0)(7,0){ x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div }} \pstThreeDPlaneGrid[planeGrid=xz,planeGridOffset=7](0,0)(7,7) \pstThreeDPlaneGrid[planeGrid=yz,planeGridOffset=7](0,0)(7,7) \end{pspicture} @@ -1021,9 +1076,7 @@ be used in any way. \verb+subticks+ defines the number of ticklines for both axe \medskip The equation for the examples is -\[ -f(x,y)=\frac{x^2+2y^2-6x-4y+3}{10} -\] +\[ f(x,y)=\frac{x^2+2y^2-6x-4y+3}{10} \] \section{Put} There exists a special option for the put macros: @@ -1084,7 +1137,6 @@ The syntax is similiar to the \verb|\rput| macro: \begin{LTXexample}[width=3.25cm] \begin{pspicture}(-2,-1.25)(1,2.25) - \psgrid \psset{Alpha=-60,Beta=30} \pstThreeDCoor[linecolor=blue,% xMin=-1,xMax=2,yMin=-1,yMax=2,zMin=-1,zMax=2] @@ -1121,7 +1173,6 @@ The object can be of any type, in most cases it will be some kind of text. The r \begin{LTXexample}[width=7.25cm] \begin{pspicture}(-4,-4)(3,4) - \psgrid \psset{Alpha=30} \pstThreeDCoor[xMin=-4,yMin=-4,zMin=-4] \pstPlanePut[plane=xy](0,0,-3){\fbox{\Huge\red xy plane}} @@ -1132,7 +1183,6 @@ The object can be of any type, in most cases it will be some kind of text. The r \begin{LTXexample}[width=7.25cm] \begin{pspicture}(-5,-3)(2,3) - \psgrid \pstThreeDCoor[xMin=2,yMin=-4,zMin=-3,zMax=2] \pstPlanePut[plane=xz](0,-3,0){\fbox{\Huge\green\textbf{xz plane}}} \pstPlanePut[plane=xz](0,0,0){\fbox{\Huge\green\textbf{xz plane}}} @@ -1143,7 +1193,6 @@ The object can be of any type, in most cases it will be some kind of text. The r \begin{LTXexample}[width=7.25cm] \begin{pspicture}(-2,-4)(6,2) - \psgrid \pstThreeDCoor[xMin=-4,yMin=-4,zMin=-4,xMax=2,zMax=2] \pstPlanePut[plane=yz](-3,0,0){\fbox{\Huge\blue\textbf{yz plane}}} \pstPlanePut[plane=yz](0,0,0){\fbox{\Huge\blue\textbf{yz plane}}} @@ -1190,7 +1239,7 @@ If you want to keep the labels readable for every view, i.\,e.\ for every value \medskip \begin{LTXexample}[width=6cm] -\begin{pspicture}(-3,-2)(3,4)\psgrid +\begin{pspicture}(-3,-2)(3,4) \psset{origin=lb} \pstThreeDCoor[xMax=3.2,yMax=3.2,zMax=4] \pstThreeDDot[drawCoor=true,linecolor=red](1,-1,2) @@ -1215,7 +1264,7 @@ letters is parallel to the $y$ axis. It's done by setting \medskip \begin{LTXexample}[width=6cm] -\begin{pspicture}(-2,-2)(4,4)\psgrid +\begin{pspicture}(-2,-2)(4,4) \psset{origin=lb} \psset{Alpha=69.3,Beta=19.43} \pstThreeDCoor[xMax=4,yMax=4,zMax=4] @@ -1255,7 +1304,7 @@ with the option \verb|dotstyle=none|.\index{dotstyle} In this case the macro dra when the \verb|drawCoor| option is set to true. \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2)(2,2)\psgrid +\begin{pspicture}(-2,-2)(2,2) \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] \psset{dotstyle=*,dotscale=2,linecolor=red,drawCoor=true} \pstThreeDDot(-1,1,1) @@ -1267,7 +1316,7 @@ In the following figure the coordinates of the dots are $(a,a,a)$ where a is $-2 \begin{LTXexample}[width=5.25cm] -\begin{pspicture}(-3,-3.25)(2,3.25)\psgrid +\begin{pspicture}(-3,-3.25)(2,3.25) \psset{Alpha=30,Beta=60,dotstyle=square*,dotsize=3pt,% linecolor=blue,drawCoor=true} \pstThreeDCoor[xMin=-3,xMax=3,yMin=-3,yMax=3,zMin=-3,zMax=3] @@ -1290,7 +1339,7 @@ There is no special \verb+polygon+ macro, because you can get nearlx the same wi \verb+\pstThreeDLine+. \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] \psset{dotstyle=*,linecolor=red,drawCoor=true} \pstThreeDDot(-1,1,0.5) @@ -1304,7 +1353,7 @@ There is no special \verb+polygon+ macro, because you can get nearlx the same wi \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] \psset{dotstyle=*,linecolor=red,drawCoor=true} \pstThreeDDot(-1,1,1) @@ -1315,7 +1364,7 @@ There is no special \verb+polygon+ macro, because you can get nearlx the same wi \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \psset{Alpha=30,Beta=60,dotstyle=pentagon*,dotsize=5pt,% linecolor=red,drawCoor=true} \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] @@ -1326,7 +1375,7 @@ There is no special \verb+polygon+ macro, because you can get nearlx the same wi \end{LTXexample} \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \psset{Alpha=30,Beta=-60} \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] \pstThreeDDot[dotstyle=square,linecolor=blue,drawCoor=true](-1,1,1) @@ -1337,7 +1386,7 @@ There is no special \verb+polygon+ macro, because you can get nearlx the same wi \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \psset{Alpha=30,Beta=-60} \pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2] \pstThreeDDot[dotstyle=square,linecolor=blue,drawCoor=true](-1,1,1) @@ -1376,7 +1425,7 @@ A triangle is given with its three points: When the option \verb|fillstyle| is set to another value than \verb|none| the triangle is filled with the active color or with the one which is set with the option \verb|fillcolor|. \begin{LTXexample}[width=6.25cm] -\begin{pspicture}(-3,-4.25)(3,3.25)\psgrid +\begin{pspicture}(-3,-4.25)(3,3.25) \pstThreeDCoor[xMin=-4,xMax=4,yMin=-3,yMax=5,zMin=-4,zMax=3] \pstThreeDTriangle[fillcolor=yellow,fillstyle=solid,% linecolor=blue,linewidth=1.5pt](5,1,2)(3,4,-1)(-1,-2,2) @@ -1390,15 +1439,15 @@ Especially for triangles the option \verb|linejoin| is important. The default va \begin{figure}[htb] \centering \psset{linewidth=0.2} -\begin{pspicture}(3,2.25)\psgrid +\begin{pspicture}(3,2.25) \psline(0,0)(1,2)(2,0)(3,2) \end{pspicture}% \hspace{0.4cm}% -\begin{pspicture}(4,2.25)\psgrid +\begin{pspicture}(4,2.25) \pscustom{\code{1 setlinejoin}\psline(0,0)(1,2)(2,0)(3,2)(4,0)} \end{pspicture}% \hspace{0.4cm}% -\begin{pspicture}(3,2.25)\psgrid +\begin{pspicture}(3,2.25) \pscustom{\code{2 setlinejoin}\psline(0,0)(1,2)(2,0)(3,2)} \end{pspicture} \caption{The meaning of the option \texttt{linejoin=0|1|2} for drawing lines} @@ -1412,7 +1461,7 @@ The syntax for a 3D square is: \end{verbatim} \begin{LTXexample}[width=5cm] -\begin{pspicture}(-1,-1)(4,3)\psgrid +\begin{pspicture}(-1,-1)(4,3) \pstThreeDCoor[xMin=-3,xMax=1,yMin=-1,yMax=2,zMin=-1,zMax=3] \psset{arrows=->,arrowsize=0.2,linecolor=blue,linewidth=1.5pt} \pstThreeDLine[linecolor=green](0,0,0)(-2,2,3)\uput[45](1.5,1){$\vec{o}$} @@ -1426,7 +1475,7 @@ Squares are nothing else than a polygon with the starting point $P_o$ given with \begin{LTXexample}[width=7.25cm] -\begin{pspicture}(-3,-2)(4,3)\psgrid +\begin{pspicture}(-3,-2)(4,3) \pstThreeDCoor[xMin=-3,xMax=3,yMin=-1,yMax=4,zMin=-1,zMax=3] {\psset{fillcolor=blue,fillstyle=solid,drawCoor=true,dotstyle=*} \pstThreeDSquare(-2,2,3)(4,0,0)(0,1,0)} @@ -1507,6 +1556,79 @@ These are the origin vector $\vec{o}$ and three direction vectors $\vec{u}$, $\v \end{pspicture} \end{LTXexample} + +\begin{verbatim} +\psBox[](){width}{depth}{height} +\end{verbatim} + +The origin vector $\vec{o}$ determines the left corner of the box. + + +\begin{LTXexample}[width=6.25cm] +\begin{pspicture}(-3,-2)(3,5) +\psset{Alpha=2,Beta=10} +\pstThreeDCoor[zMax=5,yMax=7] + \psBox(0,0,0){2}{4}{3} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=6.25cm] +\begin{pspicture}(-3,-3)(3,3) +\psset{Beta=50} +\pstThreeDCoor[xMax=3,zMax=6,yMax=6] + \psBox[showInside=false](0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[width=6.25cm] +\begin{pspicture}(-3,-4)(3,2) +\psset{Beta=40} +\pstThreeDCoor[zMax=3] + \psBox[RotY=20,showInside=false](0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + + + +\begin{LTXexample}[width=6.25cm] +\psset{Beta=10,xyzLight=-7 3 4} +\begin{pspicture}(-3,-2)(3,4) +\pstThreeDCoor[zMax=5] + \psBox(0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=6.25cm] +\psset{Beta=10,xyzLight=-7 3 4} +\begin{pspicture}(-3,-2)(3,4) +\psset{Alpha=110} +\pstThreeDCoor[zMax=5] + \psBox(0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=6.25cm] +\psset{Beta=10,xyzLight=-7 3 4} +\begin{pspicture}(-3,-2)(3,4) +\psset{Alpha=200} +\pstThreeDCoor[zMax=5] + \psBox(0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=6.25cm] +\psset{Beta=10,xyzLight=-7 3 4} +\begin{pspicture}(-3,-2)(3,4) +\psset{Alpha=290} +\pstThreeDCoor[zMax=5] + \psBox(0,0,0){2}{5}{3} +\end{pspicture} +\end{LTXexample} + + + + \section{Ellipses and circles} The equation for a two dimensional ellipse (figure \ref{fig:ellipse})is: @@ -1612,7 +1734,7 @@ shortest way into the second one $\vec{u}$, then you'll get the positive rotati \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-2.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-2.25)(2,2.25) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \pstThreeDDot[linecolor=red,drawCoor=true](1,0.5,0.5) \psset{linecolor=blue, linewidth=1.5pt} @@ -1636,7 +1758,7 @@ The macro \verb|\pstThreeDCircle| is nothing else than a synonym for \verb|\pstT In the following example the circle is drawn with only $20$ plotpoints and the option \verb|showpoints=true|. \begin{LTXexample}[width=4.25cm] -\begin{pspicture}(-2,-1.25)(2,2.25)\psgrid +\begin{pspicture}(-2,-1.25)(2,2.25) \pstThreeDCoor[xMax=2,yMax=2,zMax=2,linecolor=black] \psset{linecolor=red,linewidth=2pt,plotpoints=20,showpoints=true} \pstThreeDCircle(1.6,+0.6,1.7)(0.8,0.4,0.8)(0.8,-0.8,-0.4) @@ -1810,6 +1932,55 @@ missing, then \verb+(0,0,0)+ are taken into account. } \end{LTXexample} + + +% --------------------------------------------------------------------------------------- +\section{\CMD{psCylinder}} +% --------------------------------------------------------------------------------------- +The syntax is + +\begin{verbatim} +\psCylinder[Parameter](x,y,z){radius}{height} +\end{verbatim} + +\verb+(x,y,z)+ defines the center of the lower part of the cylinder. If it is +missing, then \verb+(0,0,0)+ are taken into account. + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3,-2)(3,7) +\psset{Beta=10} +\pstThreeDCoor[zMax=7] + \psCylinder[increment=5]{2}{5} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3,-2)(3,6) +\psset{Beta=60} +\pstThreeDCoor[zMax=9] + \psCylinder[RotX=10,increment=5]{3}{5} + \pstThreeDLine[linecolor=red](0,0,0)(0,0,8.5) +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3,-2)(3,6) +\psset{Beta=60} +\pstThreeDCoor[zMax=9] + \psCylinder[RotX=10,RotY=45,showInside=false]{2}{5} + \pstThreeDLine[linecolor=red](0,0,0)(0,0,8.5) +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3,-2)(3,6) +\psset{Beta=60} +\pstThreeDCoor[zMax=9] + \psCylinder[RotY=-45](0,1,0){2}{5} +\end{pspicture} +\end{LTXexample} + + \clearpage % --------------------------------------------------------------------------------------- @@ -1848,22 +2019,40 @@ otherwise \verb|xcolor| cannot read the values. A white color is given by \verb| \begin{LTXexample}[width=4cm] \begin{pspicture}(-2,-1)(2,5) \pstThreeDCoor[xMax=2,yMax=2,zMin=0,zMax=6,IIIDticks]% -\pstParaboloid{5}{1}% Höhe 5 und Radius 1 +\pstParaboloid{5}{1}% Hoehe 5 und Radius 1 \end{pspicture} \end{LTXexample} -\begin{LTXexample}[pos=t] -\begin{pspicture}(-.5\linewidth,-1)(.5\linewidth,7.5) -\pstParaboloid[showInside=false,SegmentColor={[cmyk]{0.8,0.1,.11,0}}]{4}{5}% -\pstThreeDCoor[xMax=3,yMax=3,zMax=7.5,IIIDticks] +\begin{LTXexample}[width=.65\linewidth,wide] +\begin{pspicture}(-.25\linewidth,-1)% + (.25\linewidth,7.5) +\pstParaboloid[showInside=false, + SegmentColor={[cmyk]{0.8,0.1,.11,0}}]{4}{5}% +\pstThreeDCoor[xMax=3,yMax=3, + zMax=7.5,IIIDticks] \end{pspicture} \end{LTXexample} +\begin{LTXexample}[width=9cm,wide] +\begin{pspicture}(0,-3)(7,5) +\pstThreeDCoor[xMax=2,yMax=13,zMin=0,zMax=6,IIIDticks]% +\multido{\rA=2.0+2.5, + \rB=0.15+0.20}{5}{% + \pstParaboloid[% + SegmentColor={[cmyk]% + {\rB,0.1,0.11,0.1}}]% + (0,\rA,0){5}{1}}% height 5 and radius 1 +\pstThreeDLine[linestyle=dashed]{->}(0,0,5)(0,13,5) +\end{pspicture} +\end{LTXexample} + + +\clearpage \section{Spheres}\label{sec:spheres} \begin{LTXexample}[width=6.25cm] -\begin{pspicture}(-4,-2.25)(2,4.25)\psgrid +\begin{pspicture}(-4,-2.25)(2,4.25) \pstThreeDCoor[xMin=-3,yMax=2] \pstThreeDSphere(1,-1,2){2} \pstThreeDDot[dotstyle=x,linecolor=red,drawCoor=true](1,-1,2) @@ -1891,7 +2080,7 @@ otherwise \verb|xcolor| cannot read the values. A white color is given by \verb| \begin{LTXexample}[width=6.25cm] -\begin{pspicture}(-4,-2.25)(2,4.25)\psgrid +\begin{pspicture}(-4,-2.25)(2,4.25) \pstThreeDCoor[xMin=-3,yMax=2] \pstThreeDSphere[SegmentColor={[cmyk]{0,0,0,0}}](1,-1,2){2} \pstThreeDDot[dotstyle=x,linecolor=red,drawCoor=true](1,-1,2) @@ -1969,7 +2158,7 @@ In fact of the inner loop it is only possible to get a closed curve in the defin Drawing three dimensional functions with curves which are transparent makes it difficult to see if a point is before or behind another one. \verb|\psplotThreeD| has an option \verb|hiddenLine| for a primitive hidden line mode, which only works when the y-intervall is defined in a way that $y_2>y_1$. Then every new curve is plotted over the forgoing one and filled with the color white. Figure \ref{fig:3dfunc-hidden} is the same as figure \ref{fig:3dfunc}, only with the option \verb|hiddenLine=true|. \begin{lstlisting} -\begin{pspicture}(-6,-4)(6,5)\psgrid +\begin{pspicture}(-6,-4)(6,5) \psset{Beta=15} \psplotThreeD[plotstyle=line,drawStyle=xLines,% is the default anyway yPlotpoints=50,xPlotpoints=50,linewidth=1pt](-4,4)(-4,4){% @@ -1983,7 +2172,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*} \centering -\begin{pspicture}(-6,-4)(6,5)\psgrid +\begin{pspicture}(-6,-4)(6,5) \psset{Beta=15} \psplotThreeD[% plotstyle=curve,% @@ -2001,7 +2190,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*} \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=curve,% @@ -2020,7 +2209,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*} \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=line,% @@ -2038,7 +2227,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*} \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=curve,% @@ -2061,7 +2250,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*} \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=line,% @@ -2079,7 +2268,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*}[htbp] \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=curve,% @@ -2099,7 +2288,7 @@ Drawing three dimensional functions with curves which are transparent makes it d \begin{figure*}[htbp] \centering \begin{pspicture}(-6,-4)(6,5) - \psgrid + \psset{Alpha=45,Beta=15} \psplotThreeD[% plotstyle=curve,% @@ -2150,7 +2339,7 @@ In the example the $t$ value is divided by $600$ for the \verb|z| coordinate, be which is the same as \verb|(0,0)| for the parameter \verb|u|. \begin{LTXexample}[width=6.75cm] -\begin{pspicture}(-3.25,-2.25)(3.25,5.25)\psgrid +\begin{pspicture}(-3.25,-2.25)(3.25,5.25) \parametricplotThreeD[xPlotpoints=200,linecolor=blue,% linewidth=1.5pt,plotstyle=curve](0,2160){% 2.5 t cos mul 2.5 t sin mul t 600 div} @@ -2180,7 +2369,7 @@ z = \sin u and at last both together is also not a problem when having these parametric functions together in one \verb|pspicture| environment (see figure \ref{fig:paraSpheres}). \begin{lstlisting} -\begin{pspicture}(-1,-1)(1,1)\psgrid +\begin{pspicture}(-1,-1)(1,1) \parametricplotThreeD[plotstyle=curve,yPlotpoints=40](0,360)(0,360){% t cos u sin mul t cos u cos mul t sin } @@ -2194,7 +2383,7 @@ and at last both together is also not a problem when having these parametric fun \begin{figure}[htbp] {\psset{xunit=1.75cm,yunit=1.75cm} \begin{pspicture}(-1,-1)(1,1) -\psgrid + \setIIIDplotDefaults %\pstThreeDCoor[xMin=-1,xMax=1,yMin=-1,yMax=1,zMin=-1,zMax=1] \parametricplotThreeD[plotstyle=curve](0,360)(0,360){% @@ -2204,7 +2393,7 @@ and at last both together is also not a problem when having these parametric fun } \end{pspicture}\hfill% \begin{pspicture}(-1,-1)(1,1) -\psgrid + %\pstThreeDCoor[xMin=-1,xMax=1,yMin=-1,yMax=1,zMin=-1,zMax=1] \parametricplotThreeD[plotstyle=curve](0,360)(0,360){% u cos t sin mul @@ -2214,7 +2403,7 @@ and at last both together is also not a problem when having these parametric fun \end{pspicture}}\hfill {\psset{xunit=2.5cm,yunit=2.5cm} \begin{pspicture}(-1,-1)(1,1) -\psgrid + \pstThreeDCoor[xMin=-1,xMax=1,yMin=-1,yMax=1,zMin=-1,zMax=1] \parametricplotThreeD[plotstyle=curve](0,360)(0,360){% t cos u sin mul @@ -2504,9 +2693,12 @@ error. In this case save prevent expanding with e.g.: \verb+\psset{nameX=$\noexp \section{Credits} Bruce Burlton | Christophe Jorssen | Chris Kuklewicz | Thorsten Suhling +\bgroup \nocite{*} - +\raggedright \bibliographystyle{plain} \bibliography{pst-3dplot-doc} +\egroup + \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-3dplot/tb72voss3d.pdf b/Master/texmf-dist/doc/generic/pst-3dplot/tb72voss3d.pdf deleted file mode 100644 index ef3bc1f69bb..00000000000 Binary files a/Master/texmf-dist/doc/generic/pst-3dplot/tb72voss3d.pdf and /dev/null differ diff --git a/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro b/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro index 30b2d62eece..12f52ad1443 100644 --- a/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro +++ b/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro @@ -15,7 +15,7 @@ %% `pst-3dplot' is a PSTricks package to draw 3d curves and graphical objects %% %% -%% version 0.23 / 2006-01-18 Herbert Voss +%% version 0.23 / 2007-08-18 Herbert Voss % /tx@3DPlotDict 50 dict def tx@3DPlotDict begin @@ -30,10 +30,20 @@ tx@3DPlotDict begin % /ConvertTo2D { RotatePoint -% /x2D y x Alpha sin mul sub def % |/_ co system -% /y2D z x Alpha cos mul sub def - /x2D x leftHanded not { neg } if Alpha cos mul y Alpha sin mul add def - /y2D x leftHanded { neg } if Alpha sin mul y Alpha cos mul add neg Beta sin mul z Beta cos mul add def + 1 { % dummy loop, will run only 1 time + coorType 0 le { % the default | + /x2D x leftHanded not { neg } if Alpha cos mul y Alpha sin mul add def % /\ co system + /y2D x leftHanded { neg } if Alpha sin mul y Alpha cos mul add neg Beta sin mul z Beta cos mul add def + exit } if + coorType 1 le { + /x2D y x Alpha 90 sub sin mul sub def % |/_ co system, no shortened x axis + /y2D z x Alpha 90 sub cos mul sub def + exit } if + coorType 2 le { % coorType |/_ with a 1/sqrt(2) shortend x-axis and 135 degrees + /x2D y x 0.5 mul sub def + /y2D z x 0.5 mul sub def + exit } if + } repeat } def % /Conv3D2D { /z ED /y ED /x ED ConvertTo2D x2D y2D } def @@ -46,10 +56,11 @@ tx@3DPlotDict begin /x { Radius longitude cos mul latitude cos mul } def /y { Radius longitude sin mul latitude cos mul } def } def +% /ConvCylToCartesian { % r phi h -> x y z - 3 1 roll % r phi h + 3 1 roll % h r phi /Phi ED - /Radius ED % h->z + /Radius ED % h->z on stack Radius Phi cos mul exch % x z Radius Phi sin mul exch % x y z } def @@ -74,19 +85,18 @@ tx@3DPlotDict begin } repeat } def % +% /CalcCoordinates {% from pst-vue3d formulesTroisD Xi 28.45 mul Yi 28.45 mul } def % pour la 3D conventionnelle -/DScreen 1 def -/Dobs 0 def /formulesTroisD{% /xObservateur x Sin1 mul neg y Cos1 mul add def /yObservateur x Cos1Sin2 mul neg y Sin1Sin2 mul sub z Cos2 mul add def /zObservateur x neg Cos1Cos2 mul y Sin1Cos2 mul sub z Sin2 mul sub def - /Xi xObservateur mul zObservateur Div def - /Yi yObservateur mul zObservateur Div def + /Xi xObservateur zObservateur Div def + /Yi yObservateur zObservateur Div def } def % /RotatePointXYZ{% Mxx are defined in the TeX file @@ -123,9 +133,11 @@ tx@3DPlotDict begin /RotatePoint { RotSequence cvx exec } def % /VecNorm { 0 exch { dup mul add } forall sqrt } def +% /UnitVec { % on stack is [a]; returns a vector with [a][a]/|a|=1 dup VecNorm /norm ED { norm div } forall 3 array astore } def +% /AxB { % on the stack are the two vectors [a][b] aload pop /b3 ED /b2 ED /b1 ED aload pop /a3 ED /a2 ED /a1 ED @@ -133,11 +145,13 @@ tx@3DPlotDict begin a3 b1 mul a1 b3 mul sub a1 b2 mul a2 b1 mul sub 3 array astore } def +% /AaddB { % on the stack are the two vectors [a][b] aload pop /b3 ED /b2 ED /b1 ED aload pop /a3 ED /a2 ED /a1 ED a1 b1 add a2 b2 add a3 b3 add 3 array astore } def +% /AmulC { % on stack is [a] and c; returns [a] mul c /factor ED { factor mul } forall 3 array astore } def % @@ -149,22 +163,18 @@ tx@3DPlotDict begin z mul exch y mul add exch x mul add 4 1 roll z mul exch y mul add exch x mul add - exch} def + exch } def % /setColorLight { % expects 7 values on stack C M Y K xL yL zL % les rayons de lumière - /zLight exch def - /yLight exch def - /xLight exch def + xLight dup mul yLight dup mul zLight dup mul add add sqrt /NormeLight ED % the color values /K exch def /Yellow exch def /Magenta exch def /Cyan exch def -% - /NormeLight {xLight dup mul yLight dup mul zLight dup mul add add - sqrt} bind def } def +% /facetteSphere { newpath /Xpoint Rsphere theta cos mul phi cos mul CX add def @@ -202,10 +212,8 @@ tx@3DPlotDict begin closepath } def % -/condition { PSfacette 0 ge } def /MaillageSphere { -% on stack must be -% x y z Radius increment C M Y K x y zLIGHT +% on stack must be x y z Radius increment C M Y K setColorLight /increment exch def /Rsphere exch def @@ -213,6 +221,7 @@ tx@3DPlotDict begin /CY exch def /CX exch def /StartTheta 0 def + /condition { PSfacetteSphere 0 ge } def -90 increment 90 increment sub {% /phi exch def StartTheta increment 360 StartTheta add increment sub {% @@ -226,7 +235,8 @@ tx@3DPlotDict begin /nYfacette Ypoint CY sub def /nZfacette Zpoint CZ sub def % test de visibilité - /PSfacette vX nXfacette mul + /PSfacetteSphere + vX nXfacette mul vY nYfacette mul add vZ nZfacette mul add def @@ -252,6 +262,78 @@ tx@3DPlotDict begin } for } def % +%---------------------- Cylinder --------------------------- +% +/PlanCoupeCylinder { % + /TableauxPoints [ + 0 1 359 { + /phi exch def + [ Radius phi Height ConvCyl2d ] % on décrit le cercle + } for + ] def + newpath + TableauxPoints 0 get aload pop moveto + 1 1 359 { TableauxPoints exch get aload pop lineto } for + closepath +} def +% +/facetteCylinder { % + newpath + Radius phi currentHeight ConvCyl2d moveto + phi 1 phi dAngle add { % loop variable on stack + Radius exch currentHeight ConvCyl2d lineto + } for + phi dAngle add -1 phi { % fill dHeight + Radius exch currentHeight dHeight add ConvCyl2d lineto + } for + closepath + } def % facette +% +/MaillageCylinder { % on stack true or false for saving values + { setColorLight % expects 4 values on stack C M Y K + /dHeight ED /dAngle ED /Height ED /Radius ED + /CZ ED /CY ED /CX ED } if +% + 0 dHeight Height dHeight sub { + /currentHeight ED + 0 dAngle 360 dAngle sub { + /phi ED +% Normal vector of the center + /nXfacetteCylinder Radius phi dAngle 2 div add cos mul CX add def + /nYfacetteCylinder Radius phi dAngle 2 div add sin mul CY add def + /nZfacetteCylinder currentHeight dHeight 2 div add CZ add def + /NormeN + nXfacetteCylinder dup mul + nYfacetteCylinder dup mul + nZfacetteCylinder dup mul + add add sqrt def + NormeN 0 eq { /NormeN 1e-10 def } if +% test de visibilité + /PSfacetteCylinder + vX nXfacetteCylinder mul + vY nYfacetteCylinder mul add + vZ nZfacetteCylinder mul add def + condition { + facetteCylinder + /cosV + 1 xLight nXfacetteCylinder mul + yLight nYfacetteCylinder mul + zLight nZfacetteCylinder mul + add add + NormeLight NormeN mul div sub def + Cyan Magenta Yellow K + 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 + facetteCylinder % drawing the segments + stroke + } if + } for + } for +} def +% +%------------------------ Cylinder type II ----------------------- % /MoveTo { Conv3D2D moveto } def /LineTo { Conv3D2D lineto } def @@ -299,4 +381,200 @@ tx@3DPlotDict begin stroke } def % +%---------------------- Box --------------------------- +% +/PlanCoupeBox { % x y z + /TableauxPoints [ + [ CX CY CZ Height add ConvBox2d ] % top or bottom + [ CX CY Depth add CZ Height add ConvBox2d ] + [ CX Width add CY Depth add CZ Height add ConvBox2d ] + [ CX Width add CY CZ Height add ConvBox2d ] + [ CX CY CZ Height add ConvBox2d ] % bottom + ] def + newpath + TableauxPoints 0 get aload pop moveto + 0 1 3 { + TableauxPoints exch get aload pop + lineto } for + closepath +} def +% +/facetteBox { % + newpath + dup + 1 eq { % back + CX CY CZ ConvBox2d moveto + CX CY CZ Height add ConvBox2d lineto + CX Width add CY CZ Height add ConvBox2d lineto + CX Width add CY CZ ConvBox2d lineto + CX CY CZ ConvBox2d lineto + } if + dup + 2 eq { % right + CX CY CZ ConvBox2d moveto + CX CY CZ Height add ConvBox2d lineto + CX CY Depth add CZ Height add ConvBox2d lineto + CX CY Depth add CZ ConvBox2d lineto + CX CY CZ ConvBox2d lineto + } if + dup + 3 eq { % left + CX Width add CY CZ ConvBox2d moveto + CX Width add CY Depth add CZ ConvBox2d lineto + CX Width add CY Depth add CZ Height add ConvBox2d lineto + CX Width add CY CZ Height add ConvBox2d lineto + CX Width add CY CZ ConvBox2d lineto + } if + 4 eq { % front + CX CY Depth add CZ ConvBox2d moveto + CX CY Depth add CZ Height add ConvBox2d lineto + CX Width add CY Depth add CZ Height add ConvBox2d lineto + CX Width add CY Depth add CZ ConvBox2d lineto + CX CY Depth add CZ ConvBox2d lineto + } if + closepath + } def % facette +% +/TestPlane { % on stack x y z of the plane center and # of plane + /nZfacetteBox ED /nYfacetteBox ED /nXfacetteBox ED + /Plane ED + /NormeN + nXfacetteBox dup mul + nYfacetteBox dup mul + nZfacetteBox dup mul + add add sqrt def + NormeN 0 eq { /NormeN 1e-10 def } if +% test de visibilité + /PSfacetteBox + vX nXfacetteBox mul + vY nYfacetteBox mul add + vZ nZfacetteBox mul add def + condition { + Plane facetteBox + /cosV + 1 xLight nXfacetteBox mul + yLight nYfacetteBox mul + zLight nZfacetteBox mul + add add + NormeLight NormeN mul div sub def + Cyan Magenta Yellow K + 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 + Plane facetteBox % drawing the segments + stroke + } if +} def +% +/MaillageBox { % on stack true or false for saving values + { setColorLight % expects 4 values on stack C M Y K + /Depth ED /Height ED /Width ED + /CZ ED /CY ED /CX ED } if +% +% Normal vector of the center + /PlaneSet [ + [ Width 2 div CX add CY Height 2 div CZ add ] % normal back + [ CX Depth 2 div CY add Height 2 div CZ add ] % normal right + [ Width CX add Depth 2 div CY add Height 2 div CZ add ] % normal left + [ Width 2 div CX add Depth CY add Height 2 div CZ add ] % normal front + ] def + PlaneSequence length 0 eq { % user defined? + Alpha abs cvi 360 mod /iAlpha ED + iAlpha 90 lt { [ 1 2 3 4 ] + }{ iAlpha 180 lt { [ 2 4 1 3 ] + }{ iAlpha 270 lt { [ 3 4 1 2 ] }{ [ 3 1 4 2] } ifelse } ifelse } ifelse + }{ PlaneSequence } ifelse + { dup 1 sub PlaneSet exch get aload pop TestPlane } forall +} def +% +%--------------------------- Paraboloid ----------------------------- +/PlanCoupeParaboloid { + /Z height store + /V {Z sqrt} bind def + /TableauxPoints [ + 0 1 359 { + /U exch def [ U U Z V calculate2DPoint ] % 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 +% +/facetteParaboloid{ + 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 def + U U Z2 V calculate2DPoint lineto + } for + closepath +} def % facette +% +/MaillageParaboloid { + % on stack true or false for saving values + { setColorLight % expects 7 values on stack C M Y K xL yL zL +% /CZ ED /CY ED /CX ED + } if + 0 pas height pas sub {% + /Z ED + /V Z sqrt def + 0 increment 360 increment sub {% + /U exch def +% Centre de la facette + /Ucentre U increment 2 div add def + /Vcentre Z pas 2 div add sqrt def +% normale à la facette + /nXfacetteParaboloid 2 Vcentre dup mul mul Ucentre cos mul radius mul def + /nYfacetteParaboloid 2 Vcentre dup mul mul Ucentre sin mul radius mul def + /nZfacetteParaboloid Vcentre neg radius dup mul mul def + /NormeN { + nXfacetteParaboloid dup mul + nYfacetteParaboloid dup mul + nZfacetteParaboloid dup mul + add add sqrt} bind def + NormeN 0 eq {/NormeN 1e-10 def} if +% test de visibilité + /PSfacetteParaboloid vX nXfacetteParaboloid mul + vY nYfacetteParaboloid mul add + vZ nZfacetteParaboloid mul add def + condition { + facetteParaboloid + /cosV 1 xLight nXfacetteParaboloid mul + yLight nYfacetteParaboloid mul + zLight nZfacetteParaboloid mul + add add + NormeLight + NormeN mul div sub def + Cyan Magenta Yellow K + 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 + facetteParaboloid + stroke + } if + } for + } for +} def +% +% end diff --git a/Master/texmf-dist/source/generic/pst-3dplot/Makefile b/Master/texmf-dist/source/generic/pst-3dplot/Makefile deleted file mode 100644 index 294bb21f319..00000000000 --- a/Master/texmf-dist/source/generic/pst-3dplot/Makefile +++ /dev/null @@ -1,48 +0,0 @@ - -# `Makefile' for `pst-3dplot.pdf', hv, 2007/03/17 - -.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps - -PACKAGE = pst-3dplot - -MAIN = $(PACKAGE)-doc - -LATEX = latex - -ARCHNAME = $(MAIN)-$(shell date +%y%m%d) - -ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile - -all : doc clean -doc: $(MAIN).pdf - -$(MAIN).pdf : $(MAIN).ps - GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $< - -$(MAIN).ps : $(MAIN).dvi - dvips $< - -$(MAIN).dvi : $(MAIN).tex - $(LATEX) $< - $(LATEX) $< - if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi - if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi - makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \ - $(basename $<).glo - makeindex -t $(basename $<).ilg -o $(basename $<).ind \ - $(basename $<).idx - bibtex $(basename $<) - $(LATEX) $< - $(LATEX) $< - -clean : - $(RM) $(addprefix $(MAIN), .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .Roessler .bbl ) - $(RM) $(addprefix $(MAIN), .dvi .ps) - -veryclean : clean - $(RM) $(addprefix $(MAIN), .pdf .bbl .blg) - -arch : - zip $(ARCHNAME).zip $(ARCHFILES) - -# EOF 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 88063d0edd8..ddc1e59632f 100644 --- a/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex +++ b/Master/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex @@ -25,8 +25,8 @@ \ifx\PSTricksAddLoaded\endinput\else\input pstricks-add.tex\fi \ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi % -\def\fileversion{1.74} -\def\filedate{2007/06/17} +\def\fileversion{1.75} +\def\filedate{2007/08/15} \message{`PST-3dplot' v\fileversion, \filedate\space (HV)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -63,12 +63,26 @@ \define@boolkey[psset]{pst-3dplot}[Pst@]{drawing}[true]{}% draw the coordinates? \define@boolkey[psset]{pst-3dplot}[Pst@]{drawCoor}[true]{}% draw the coordinates of a dot? \define@boolkey[psset]{pst-3dplot}[Pst@]{hiddenLine}[true]{}% emulate hidden line surface? -\define@boolkey[psset]{pst-3dplot}[Pst@]{SphericalCoor}[true]{% (r,phi,theta) - \Pst@CylindricalCoorfalse}% -\define@boolkey[psset]{pst-3dplot}[Pst@]{CylindricalCoor}[true]{% (r,phi,z) - \Pst@SphericalCoorfalse}% +\define@boolkey[psset]{pst-3dplot}[Pst@]{SphericalCoor}[true]{}% (r,phi,theta) +% \Pst@CylindricalCoorfalse}% +\define@boolkey[psset]{pst-3dplot}[Pst@]{CylindricalCoor}[true]{}% (r,phi,z) +% \Pst@SphericalCoorfalse}% \define@boolkey[psset]{pst-3dplot}[Pst@]{leftHanded}[true]{}% left-Handed coor -\psset[pst-3dplot]{drawing,drawCoor,hiddenLine=false,SphericalCoor=false,leftHanded=false} +\define@key[psset]{pst-3dplot}{coorType}{% + \pst@getint{#1}\psk@ThreeDplot@coorType + \ifcase\psk@ThreeDplot@coorType + % 0 is the default + \or +% \def\psk@ThreeDplot@Beta{0} + \or + \def\psk@ThreeDplot@Alpha{135} +% \def\psk@ThreeDplot@Beta{0} + \fi} +% 0 default +% 1 z y are orthogonal and angle x|y is Alpha, Beta has no meaning +% 1 z y are orthogonal and angle Alpha is always 135, x-axis shortened by 1/sqrt(2), Beta has no meaning +\psset[pst-3dplot]{drawing,drawCoor,hiddenLine=false,SphericalCoor=false, + leftHanded=false,coorType=0} % % ------- the global definitions for the pspicture frame ------ % @@ -96,6 +110,7 @@ \define@key[psset]{pst-3dplot}{RotY}{\def\psk@ThreeD@RotY{#1}}% y rotation \define@key[psset]{pst-3dplot}{RotZ}{\def\psk@ThreeD@RotZ{#1}}% z \define@key[psset]{pst-3dplot}{RotSequence}{\def\psk@ThreeD@RotS{#1}}% +\define@key[psset]{pst-3dplot}{PlaneSequence}{\def\psk@ThreeD@PlaneSequence{#1}}% \define@key[psset]{pst-3dplot}{zCoor}{\def\psk@ThreeDplot@zCoor{#1}} \psset[pst-3dplot]{zCoor=0} % @@ -122,7 +137,7 @@ \define@key[psset]{pst-3dplot}{endAngle}{% for ellipse/circle arc \def\psk@ThreeDplot@endAngle{#1}} \define@key[psset]{pst-3dplot}{linejoin}{% how lines come together 0,1,2 - \def\psk@ThreeDplot@linejoin{#1}} + \def\psk@ThreeDplot@linejoin{#1 }} \define@key[psset]{pst-3dplot}{plane}{% xy,xz,yz \edef\psk@ThreeDplot@plane{#1}} % must be expanded \define@key[psset]{pst-3dplot}{pOrigin}{% combination of (lr)(tBb) @@ -134,10 +149,8 @@ % % -------------- the length and node definitions ------------- % -\define@key[psset]{pst-3dplot}{XO}{% the X-offset - \def\psk@ThreeDplot@XO{#1}} -\define@key[psset]{pst-3dplot}{YO}{% the y-offset - \def\psk@ThreeDplot@YO{#1}} +\define@key[psset]{pst-3dplot}{XO}{\def\psk@ThreeDplot@XO{#1}}% the X-offset +\define@key[psset]{pst-3dplot}{YO}{\def\psk@ThreeDplot@YO{#1}}% the y-offset \define@key[psset]{pst-3dplot}{angleStep}{% for circles \def\psk@ThreeDplot@angleStep{#1}} \define@key[psset]{pst-3dplot}{posStart}{% where the arrows start @@ -151,8 +164,7 @@ \define@key[psset]{pst-3dplot}{invisibleLineStyle}{% offset for \arrowLine \edef\psk@ThreeDplot@invisibleLineStyle{#1}} % -\newif\if@IIIDticks% draw the ticks? -\define@key[psset]{pst-3dplot}{IIIDticks}[true]{\@nameuse{@IIIDticks#1}} +\define@boolkey[psset]{pst-3dplot}[Pst@]{IIIDticks}[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}} @@ -161,18 +173,15 @@ \define@key[psset]{pst-3dplot}{IIIDxticksep}{\def\psk@IIIDxticksep{#1}} \define@key[psset]{pst-3dplot}{IIIDyticksep}{\def\psk@IIIDyticksep{#1}} \define@key[psset]{pst-3dplot}{IIIDzticksep}{\def\psk@IIIDzticksep{#1}} -\define@key[psset]{pst-3dplot}{nameX}{% start of the object arrow - \def\psk@ThreeDplot@nameX{#1}} -\define@key[psset]{pst-3dplot}{spotX}{% where to draw the label - \def\psk@ThreeDplot@spotX{#1}} +\define@key[psset]{pst-3dplot}{nameX}{\def\psk@ThreeDplot@nameX{#1}}% start of the object arrow +\define@key[psset]{pst-3dplot}{spotX}{\def\psk@ThreeDplot@spotX{#1}}% where to draw the label \define@key[psset]{pst-3dplot}{nameY}{\def\psk@ThreeDplot@nameY{#1}} \define@key[psset]{pst-3dplot}{spotY}{\def\psk@ThreeDplot@spotY{#1}} \define@key[psset]{pst-3dplot}{nameZ}{\def\psk@ThreeDplot@nameZ{#1}} \define@key[psset]{pst-3dplot}{spotZ}{\def\psk@ThreeDplot@spotZ{#1}} % % ### begin Torsten Suhling -\define@key[psset]{pst-3dplot}{planecorr}{% make plane tags readable - \def\psk@ThreeDplot@planecorr{#1}} +\define@key[psset]{pst-3dplot}{planecorr}{\def\psk@ThreeDplot@planecorr{#1}}% make plane tags readable \def\ThreeDplot@planecorrOff{off} % default \def\ThreeDplot@planecorrNormal{normal} % make planes readable \def\ThreeDplot@planecorrXYrot{xyrot} % and put tag for xy-plane @@ -187,10 +196,15 @@ % \define@key[psset]{pst-3dplot}{planeGrid}{\def\psk@planeGrid{#1}} \define@key[psset]{pst-3dplot}{planeGridOffset}{\def\psk@planeGridOffset{#1}} -\define@key[psset]{pst-3dplot}{subticks}{\def\psk@xsubticks{#1}\def\psk@ysubticks{#1}} -\define@key[psset]{pst-3dplot}{xsubticks}{\def\psk@xsubticks{#1}} -\define@key[psset]{pst-3dplot}{ysubticks}{\def\psk@ysubticks{#1}} +%\define@key[psset]{pst-3dplot}{subticks}{\def\psk@xsubticks{#1}\def\psk@ysubticks{#1}} +%\define@key[psset]{pst-3dplot}{xsubticks}{\def\psk@xsubticks{#1}} +%\define@key[psset]{pst-3dplot}{ysubticks}{\def\psk@ysubticks{#1}} % +\define@boolkey[psset]{pst-3dplot}[PstThreeDplot@]{showInside}[true]{} +\define@key[psset]{pst-3dplot}{SegmentColor}{\pst@getcolor{#1}\psk@ThreeDplot@SegmentColor} +\define@key[psset]{pst-3dplot}{increment}{\pst@checknum{#1}\psk@ThreeDplot@increment} +%\define@key[psset]{pst-3dplot}{CMYK}{\def\psk@ThreeDplot@CMYK{#1}} +\define@key[psset]{pst-3dplot}{xyzLight}{\def\psk@ThreeDplot@xyzLight{#1 }} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -201,6 +215,7 @@ \pstheader{pst-3dplot.pro} % ---- only shortcuts ------- \def\pst@3ddict{tx@3DPlotDict begin } +\def\tx@3DPlotDict{tx@3DPlotDict begin } \def\tx@saveCoor{\pst@3ddict saveCoor end } \def\tx@X{\pst@3ddict x end } \def\tx@Y{\pst@3ddict y end } @@ -214,11 +229,11 @@ % % \def\setIIIDplotDefaults{% - \psset[pst-3dplot]{% + \psset[pst-3dplot]{ drawing=true,hiddenLine=false,xMin=-1,xMax=4,yMin=-1,yMax=4,zMin=-1,zMax=4, xThreeDunit=1.0,yThreeDunit=1.0,zThreeDunit=1.0,Alpha=45,Beta=30, deltax=1,deltay=1,deltaz=1,Deltax=1,Deltay=1,Deltaz=1, - RotX=0,RotY=0,RotZ=0,RotSequence=xyz, + RotX=0,RotY=0,RotZ=0,RotSequence=xyz,PlaneSequence={}, drawStyle=xLines,xPlotpoints=25,yPlotpoints=25,beginAngle=0,endAngle=360, linejoin=1,XO=0,YO=0,angleStep=1,posStart=0,length=2,arrowOffset=0, visibleLineStyle=solid,invisibleLineStyle=dashed,nameX=$x$,spotX=180, @@ -227,15 +242,15 @@ Dz=1,IIIDticks=false,IIIDxTicksPlane=xy,IIIDyTicksPlane=yz,IIIDzTicksPlane=yz, IIIDticksize=0.1,IIIDxticksep=-0.4,IIIDyticksep=-0.2,IIIDzticksep=0.2, planecorr=off, - planeGrid=xy,planeGridOffset=0,subticks=10, - leftHanded=false,IIIDdAlpha=0 + 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 }% \def\pst@linetype{2}% to prevent an unknown linetyp with dash } \setIIIDplotDefaults % \def\variablesIIID{ -% 0 0 translate /RotX \psk@ThreeD@RotX\space def /RotY \psk@ThreeD@RotY\space def /RotZ \psk@ThreeD@RotZ\space def @@ -263,6 +278,9 @@ /M32 RotX sin RotY cos mul def /M33 RotX cos RotY cos mul def /leftHanded \ifPst@leftHanded true \else false \fi def + /coorType \psk@ThreeDplot@coorType\space def + \psk@ThreeDplot@xyzLight\space + /zLight ED /yLight ED /xLight ED }% % % (#1) -> #1 #2 #3 @@ -270,31 +288,31 @@ \def\pst@getThreeDcoor(#1,#2,#3){% \edef\pst@coorIIID{#1\space #2\space #3\space}% } -\def\pst@addThreeDVec(#1)(#2)#3#4#5{% +\def\pst@addThreeDVec(#1)(#2)#3#4#5{% (#1)+(#2)=(#3,#4,#5) \pst@calcThreeDVec(#1)(#2)% \let#3\pst@getValueX% \let#4\pst@getValueY% \let#5\pst@getValueZ% } -\def\pst@subThreeDVec(#1)(#2,#3,#4)#5#6#7{% +\def\pst@subThreeDVec(#1)(#2,#3,#4)#5#6#7{% (#1)-(#2,#3,#4)=(#5,#6,#7) \pst@calcThreeDVec(#1)(-#2,-#3,-#4)% \let#5\pst@getValueX% \let#6\pst@getValueY% \let#7\pst@getValueZ% } -\def\pst@calcThreeDVec(#1,#2,#3)(#4,#5,#6){{% - \pst@dima=#1 pt% - \pst@dimb=#2 pt% - \pst@dimc=#3 pt% - \pst@dimf=#4 pt% - \pst@dimg=#5 pt% - \pst@dimh=#6 pt% - \advance\pst@dima by \pst@dimf% - \advance\pst@dimb by \pst@dimg% - \advance\pst@dimc by \pst@dimh% - \xdef\pst@getValueX{\pst@number\pst@dima}% - \xdef\pst@getValueY{\pst@number\pst@dimb}% - \xdef\pst@getValueZ{\pst@number\pst@dimc}% +\def\pst@calcThreeDVec(#1,#2,#3)(#4,#5,#6){{% #1+#4; #2+#5; #3+#6 + \pst@dima=#1 pt% + \pst@dimb=#2 pt% + \pst@dimc=#3 pt% + \pst@dimf=#4 pt% + \pst@dimg=#5 pt% + \pst@dimh=#6 pt% + \advance\pst@dima by \pst@dimf% + \advance\pst@dimb by \pst@dimg% + \advance\pst@dimc by \pst@dimh% + \xdef\pst@getValueX{\pst@number\pst@dima}% + \xdef\pst@getValueY{\pst@number\pst@dimb}% + \xdef\pst@getValueZ{\pst@number\pst@dimc}% }}% % % the ThreeD coordinate system @@ -320,7 +338,7 @@ \uput[\psk@ThreeDplot@spotX](xMax){\psk@ThreeDplot@nameX}% \uput[\psk@ThreeDplot@spotY](yMax){\psk@ThreeDplot@nameY}% \uput[\psk@ThreeDplot@spotZ](zMax){\psk@ThreeDplot@nameZ}% - \if@IIIDticks% + \ifPst@IIIDticks% % \ifnum\psk@ThreeDplot@Alpha=90\else \pst@dimx=\psk@ThreeDplot@xMax\p@% \pst@dima=\psk@ThreeDplot@xThreeDunit\p@% @@ -418,8 +436,8 @@ \pssetylength\pst@dimz{#1} \pssetylength\pst@dimf{#3} \pst@getlength\psk@planeGridOffset\pst@dima - \pst@cntx=\psk@xsubticks\advance\pst@cntx by \@ne - \pst@cnty=\psk@ysubticks\advance\pst@cnty by \@ne + \pst@cntx=\psk@xsubticks \advance\pst@cntx by \@ne + \pst@cnty=\psk@ysubticks \advance\pst@cnty by \@ne \psset{unit=1pt,planeGridOffset=\pst@dima}% we need everything in pt \ifx\psk@planeGrid\ThreeDplot@planeXY \multido{\rA=\strip@pt\pst@dimz+\strip@pt\pst@dx}{\pst@cntx}{% @@ -520,9 +538,9 @@ #1\space #2\space #3\space ConvertToCartesian \else - /x #1\space\psk@ThreeDplot@xThreeDunit\space mul def - /y #2\space\psk@ThreeDplot@yThreeDunit\space mul def - /z #3\space\psk@ThreeDplot@zThreeDunit\space mul def + /x #1\space \psk@ThreeDplot@xThreeDunit\space mul def + /y #2\space \psk@ThreeDplot@yThreeDunit\space mul def + /z #3\space \psk@ThreeDplot@zThreeDunit\space mul def \fi ConvertTo2D x2D \pst@number\psxunit\space mul @@ -626,32 +644,30 @@ % (#3) first direction vector ux,uy,uz % (#4) second direction vector wx,wy,wz % -\def\pstThreeDSquare{\pst@object{squareIIID}} -\def\squareIIID@i{\squareIIID@ii} -\def\squareIIID@ii(#1)(#2)(#3){% - \ifPst@drawCoor% - {% +\def\pstThreeDSquare{\pst@object{pstThreeDSquare}} +\def\pstThreeDSquare@i(#1)(#2)(#3){% + \ifPst@drawCoor {% \psset{linestyle=dashed,linewidth=0.5pt}% \pstThreeDDot(#1)% - \pst@addThreeDVec(#1)(#2)\pst@tempa\pst@tempb\pst@tempc% - \pstThreeDDot(\pst@tempa,\pst@tempb,\pst@tempc)% - \pst@addThreeDVec(#1)(#3)\pst@tempa\pst@tempb\pst@tempc - \pstThreeDDot(\pst@tempa,\pst@tempb,\pst@tempc)% - \pst@addThreeDVec(\pst@tempa,\pst@tempb,\pst@tempc)% - (#2)\pst@tempa\pst@tempb\pst@tempc% - \pstThreeDDot(\pst@tempa,\pst@tempb,\pst@tempc)% + \pst@addThreeDVec(#1)(#2)\pst@tempA\pst@tempB\pst@tempC% + \pstThreeDDot(\pst@tempA,\pst@tempB,\pst@tempC)% + \pst@addThreeDVec(#1)(#3)\pst@tempA\pst@tempB\pst@tempC + \pstThreeDDot(\pst@tempA,\pst@tempB,\pst@tempC)% + \pst@addThreeDVec(\pst@tempA,\pst@tempB,\pst@tempC)% + (#2)\pst@tempA\pst@tempB\pst@tempC% + \pstThreeDDot(\pst@tempA,\pst@tempB,\pst@tempC)% }% - \fi% - \getThreeDCoor{#1}\pst@tempA% - \getThreeDCoor{#2}\pst@tempB% - \getThreeDCoor{#3}\pst@tempC% - \begin@OpenObj + \fi + \getThreeDCoor{#1}\pst@tempAA + \getThreeDCoor{#2}\pst@tempBB + \getThreeDCoor{#3}\pst@tempCC + \begin@ClosedObj \addto@pscode{% \pst@3ddict \variablesIIID - /P1 { \pst@tempA\space } def % x y z or Radius longitude lattitude - /P2 { \pst@tempB\space } def % - /P3 { \pst@tempC\space } def % + /P1 { \pst@tempAA } def % x y z or Radius longitude lattitude + /P2 { \pst@tempBB } def % + /P3 { \pst@tempCC } def % /SphericalCoor \ifPst@SphericalCoor true \else false \fi def % /xUnit { \pst@number\psxunit\space mul } def /yUnit { \pst@number\psyunit\space mul } def @@ -675,7 +691,7 @@ \pst@cp\space \psline@iii\space \tx@Line\space closepath end }% - \end@OpenObj% + \end@ClosedObj% } % @@ -691,18 +707,18 @@ \begingroup% \psset{linestyle=\psk@ThreeDplot@invisibleLineStyle}% \psset{#1}% - \pstVerb{ \pst@3ddict \variablesIIID end }% +% \pstVerb{ \pst@3ddict \variablesIIID\space end }% \iftrue \pstThreeDSquare[#1](#2)(#4)(#5) % lower square \pstThreeDSquare(#2)(#3)(#4)% back square % \psset{linestyle=\psk@ThreeDplot@visibleLineStyle}% - \pst@addThreeDVec(#2)(#4)\pst@tempa\pst@tempb\pst@tempc - \pstThreeDSquare[#1](\pst@tempa,\pst@tempb,\pst@tempc)(#3)(#5)% left square - \pst@addThreeDVec(#2)(#3)\pst@tempa\pst@tempb\pst@tempc - \pstThreeDSquare[#1](\pst@tempa,\pst@tempb,\pst@tempc)(#4)(#5)% top square - \pst@addThreeDVec(#2)(#5)\pst@tempa\pst@tempb\pst@tempc - \pstThreeDSquare[#1](\pst@tempa,\pst@tempb,\pst@tempc)(#3)(#4)% front square + \pst@addThreeDVec(#2)(#4)\pst@tempA\pst@tempB\pst@tempC + \pstThreeDSquare[#1](\pst@tempA,\pst@tempB,\pst@tempC)(#3)(#5)% left square + \pst@addThreeDVec(#2)(#3)\pst@tempA\pst@tempB\pst@tempC + \pstThreeDSquare[#1](\pst@tempA,\pst@tempB,\pst@tempC)(#4)(#5)% top square + \pst@addThreeDVec(#2)(#5)\pst@tempA\pst@tempB\pst@tempC + \pstThreeDSquare[#1](\pst@tempA,\pst@tempB,\pst@tempC)(#3)(#4)% front square \else% better support for hidden lines \pstThreeDSquare[#1](#2)(#4)(#5) % lower square \pst@absdim{\psk@ThreeDplot@Alpha pt}\pst@dimo @@ -807,11 +823,11 @@ \def\pstThreeDPlotFunc{\psplotThreeD}% only for compatibility % % -% cone[options](center){radius}{height} +% cone[options](center)(radiusA vec)(radiusB vec){height} % \def\pstThreeDCone{\pst@object{pstThreeDCone}} \def\pstThreeDCone@i(#1)(#2)(#3)#4{{% - \pst@usepar + \use@par \pstThreeDEllipse(#1)(#2)(#3)% \begin@OpenObj% \getThreeDCoor{#1}\pst@tempA% @@ -827,7 +843,8 @@ Center aload pop saveCoor ConvertTo2D /xC x2D def /yC y2D def /rA [ \pst@tempB \space SphericalCoor { ConvertToCartesian } if ] def /rB [ \pst@tempC \space SphericalCoor { ConvertToCartesian } if ] def - rA rB AxB UnitVec #4 AmulC Center AaddB aload pop saveCoor ConvertTo2D /x2 x2D xUnit def /y2 y2D yUnit def + rA rB AxB UnitVec #4 AmulC Center AaddB aload pop + saveCoor ConvertTo2D /x2 x2D xUnit def /y2 y2D yUnit def [ xC rA VecNorm add 90 Beta sub sin sub xUnit yC Beta sin add yUnit x2 y2 xC rA VecNorm sub xUnit yC yUnit @@ -860,25 +877,16 @@ \ignorespaces} % % Paraboloid (Idea is from Manuel ... ) -\newif\ifPstThreeDplot@showInside -\define@key[psset]{pst-3dplot}{showInside}[true]{\@nameuse{PstThreeDplot@showInside@#1}} -\define@key[psset]{pst-3dplot}{SegmentColor}{\pst@getcolor{#1}\psk@ThreeDplot@SegmentColor} -\define@key[psset]{pst-3dplot}{increment}{\pst@checknum{#1}\psk@ThreeDplot@increment} -%\define@key[psset]{pst-3dplot}{CMYK}{\def\psk@ThreeDplot@CMYK{#1}} -\define@key[psset]{pst-3dplot}{xyzLight}{\def\psk@ThreeDplot@xyzLight{#1}} -\newcmykcolor{SegColor}{0.2 0.6 1 0} -\psset[pst-3dplot]{xyzLight=1 1 2,showInside=true,SegmentColor=SegColor,increment=10} -%\psset[pst-3dplot]{xyzLight=1 1 2,showInside=true,SegmentColor={[cmyk]{0.2,0.6,1,0}},increment=10} % \def\pstParaboloid{\pst@object{pstParaboloid}} -\def\pstParaboloid@i#1#2{% #1:height #2:radius +\def\pstParaboloid@i{\@ifnextchar(\pstParaboloid@ii{\pstParaboloid@ii(0,0,0)}} +\def\pstParaboloid@ii(#1,#2,#3)#4#5{% #1:height #2:radius \addto@par{viewpoint=0 0 0}% \begin@SpecialObj% \addto@pscode{% - /height #1 def - /radius #2 #1 sqrt div def + /height #4 def + /radius #5 #4 sqrt div def /increment \psk@ThreeDplot@increment\space def - /cmyk {} def /viewpoint { \psk@viewpoint \psk@ThreeDplot@Beta\space sin add 3 1 roll @@ -886,120 +894,34 @@ \psk@ThreeDplot@Alpha\space sin add \psk@ThreeDplot@Beta\space cos mul 3 1 roll } def 0 viewpoint 0 \tx@SetMatrixThreeD - viewpoint /vZ ED /vY ED /vX ED - 1 setlinejoin - % les rayons de lumière - /xLight 1 def - /yLight 0.1 def - /zLight 0.2 def - % précision du tracè + viewpoint + \pst@3ddict /vZ ED /vY ED /vX ED + \variablesIIID + \psk@ThreeDplot@linejoin setlinejoin /pas 0.5 def - /pas10 {pas 10 div} bind def + /pas10 pas 10 div def + /cmyk {} def % we need only the values + \psk@ThreeDplot@SegmentColor\space +% \psk@ThreeDplot@xyzLight\space % xLight yLight zLight % - /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 calculate2DPoint ] % 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 + U10 cos V0 mul radius mul #1 add \pst@number\psunit mul + U20 sin V0 mul radius mul #2 add \pst@number\psunit mul + Z0 #3 add \pst@number\psunit mul \tx@ProjThreeD } def - /conditionGE { PSfacette 0 ge } def - /conditionLE { PSfacette 0 le } def + /condition { PSfacetteParaboloid 0 le } def + true MaillageParaboloid + /condition { PSfacetteParaboloid 0 ge } def + false MaillageParaboloid \ifPstThreeDplot@showInside - /condition { conditionGE } def - MaillageParaboloid + /condition { PSfacetteParaboloid 0 ge } def + false 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 + PlanCoupeParaboloid 1 0.5 0.5 setrgbcolor fill + PlanCoupeParaboloid 0 setgray stroke } if \fi + end }% % fin du code ps \showpointsfalse% @@ -1011,6 +933,7 @@ \def\pstSphereIIID@i(#1,#2,#3)#4{% #1:origin (x,y,z) #2:radius \addto@par{viewpoint=0 0 0}% to make it compatible with pst-3dplot \begin@SpecialObj% +\use@par \addto@pscode{% /viewpoint {% to make it compatible with parallel projection \psk@viewpoint @@ -1027,9 +950,10 @@ \psk@ThreeDplot@increment\space /cmyk {} def % we need only the values \psk@ThreeDplot@SegmentColor\space -% \psk@ThreeDplot@CMYK\space % CMYK - \psk@ThreeDplot@xyzLight\space % xLight yLight zLight - tx@3DPlotDict begin MaillageSphere end +% \psk@ThreeDplot@xyzLight\space % xLight yLight zLight + tx@3DPlotDict begin + \variablesIIID + MaillageSphere end }% fin du code ps \showpointsfalse% \end@SpecialObj% @@ -1094,6 +1018,119 @@ \end@ClosedObj }\ignorespaces} % +%-------------------------- Cylinder ---------------------------- +% +\def\psCylinder{\pst@object{psCylinder}} +\def\psCylinder@i{\@ifnextchar(\psCylinder@ii{\psCylinder@ii(0,0,0)}} +\def\psCylinder@ii(#1,#2,#3)#4#5{% #1,#2,#3: center of the bottom #4:radius #5:height +\addto@par{viewpoint=0 0 0}% +\pssetlength\pst@dima{#4} +\pssetlength\pst@dimb{#5} +\begin@SpecialObj% +\use@par +\addto@pscode { + /viewpoint { + \psk@viewpoint + \psk@ThreeDplot@Beta\space sin add 3 1 roll + \psk@ThreeDplot@Alpha\space cos add \psk@ThreeDplot@Beta\space cos mul 3 1 roll + \psk@ThreeDplot@Alpha\space sin add \psk@ThreeDplot@Beta\space cos mul 3 1 roll + } def + 0 viewpoint 0 \tx@SetMatrixThreeD + viewpoint + \pst@3ddict /vZ ED /vY ED /vX ED + \variablesIIID end + \psk@ThreeDplot@linejoin setlinejoin +% + #1 #2 #3 \ifPst@CylindricalCoor \tx@ConvCylToCartesian \fi + \pst@number\pst@dima \pst@number\psxunit div % Radius + \pst@number\pst@dimb \pst@number\psyunit div % Height + \psk@ThreeDplot@increment % angle increment + 0.5 % height increment + /cmyk {} def % we need only the values + \psk@ThreeDplot@SegmentColor\space +% + \tx@3DPlotDict + /ConvCyl2d { % on stack r phi h + ConvCylToCartesian + CZ add /z ED CY add /y ED CX add /x ED + RotatePoint x y z Conv3D2D + \pst@number\psyunit mul exch + \pst@number\psxunit mul exch + } def % on stack x y + /condition { PSfacetteCylinder 0 le } def % inside + true MaillageCylinder % save paras + /condition { PSfacetteCylinder 0 ge } def % outside + false MaillageCylinder % use old paras + \ifPstThreeDplot@showInside\else + vZ 0 ge { % viewpoint coor + PlanCoupeCylinder 1 0.5 0.5 setrgbcolor fill + PlanCoupeCylinder 0 setgray stroke } if + \fi + end + }% +% fin du code ps + \showpointsfalse% + \end@SpecialObj% +\ignorespaces} +% +%-------------------------- Box ---------------------------- +% +\def\psBox{\pst@object{psBox}} +\def\psBox@i{\@ifnextchar(\psBox@ii{\psBox@ii(0,0,0)}} +\def\psBox@ii(#1,#2,#3)#4#5#6{% #1,#2,#3: center of the lower left edge + % #4:width #5:height #6:depth +\addto@par{viewpoint=0 0 0}% +\pssetlength\pst@dima{#4} +\pssetlength\pst@dimb{#5} +\pssetlength\pst@dimc{#5} +\begin@SpecialObj% +\use@par +\addto@pscode { + /viewpoint { + \psk@viewpoint + \psk@ThreeDplot@Beta\space sin add 3 1 roll + \psk@ThreeDplot@Alpha\space cos add \psk@ThreeDplot@Beta\space cos mul 3 1 roll + \psk@ThreeDplot@Alpha\space sin add \psk@ThreeDplot@Beta\space cos mul 3 1 roll + } def + 0 viewpoint 0 \tx@SetMatrixThreeD + viewpoint + \tx@3DPlotDict + /vZ ED /vY ED /vX ED + \variablesIIID + \psk@ThreeDplot@linejoin setlinejoin +% + #1 #2 #3 + \pst@number\pst@dima \pst@number\psxunit div % Width + \pst@number\pst@dimb \pst@number\psyunit div % Height + \pst@number\pst@dimc \pst@number\psyunit div % Depth + /cmyk {} def % we need only the values + \psk@ThreeDplot@SegmentColor\space +% + /PlaneSequence [ \psk@ThreeD@PlaneSequence ] def + /ConvBox2d { % on stack x y z + CZ add /z ED CY add /y ED CX add /x ED + RotatePoint x y z Conv3D2D + \pst@number\psyunit mul exch + \pst@number\psxunit mul exch + } def % on stack x y + /condition { PSfacetteBox 0 le } def % inside + true MaillageBox % save paras + /condition { PSfacetteBox 0 ge } def % outside + false MaillageBox % use old paras + \ifPstThreeDplot@showInside\else + vZ 0 ge { % viewpoint coor + PlanCoupeBox 1 0.5 0.5 setrgbcolor fill +% /Height 0 def + PlanCoupeBox 0 setgray stroke } if + \fi + end + }% +% fin du code ps + \showpointsfalse% + \end@SpecialObj% +\ignorespaces} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\psplotinit#1{\xdef\psplot@init{#1 }} @@ -1418,7 +1455,7 @@ \@nameuse{endplot@\psplotstyle}% } % -% Plot 3D data +%------------------------ Plot 3D data -------------------------- % \def\fileplotThreeD{\def\pst@par{}\pst@object{fileplotThreeD}} \def\fileplotThreeD@i#1{% @@ -1489,26 +1526,26 @@ % % \pst@def{ScalePointsThreeD}<% - counttomark dup dup cvi eq not { exch pop } if - /m exch def /n m 3 div cvi def - n { % now we have x y z - 3 -1 roll % y z x - \psk@ThreeDplot@xThreeDunit\space div - dup % y z x x - neg Alpha cos mul % y z x (x) - 4 -1 roll % z x (x) y - \psk@ThreeDplot@yThreeDunit\space div - dup % z x (x) y y - 5 1 roll % y z x (x) y - Alpha sin mul add \pst@number\psxunit mul % y z x (x2) - 4 1 roll % (x2) y z x - Alpha sin mul % (x2) y z (x) - 3 -1 roll % (x2) z (x) y - Alpha cos mul add neg Beta sin mul % (x2) z (x) - exch % (x2) (x) z - \psk@ThreeDplot@zThreeDunit\space div - Beta cos mul add \pst@number\psyunit mul % (x2) (y2) - m 1 sub 1 roll m 1 sub 1 roll /m m 3 sub def } repeat> + counttomark dup dup cvi eq not { exch pop } if + /m exch def /n m 3 div cvi def + n { % now we have x y z + 3 -1 roll % y z x + \psk@ThreeDplot@xThreeDunit\space div + dup % y z x x + neg Alpha cos mul % y z x (x) + 4 -1 roll % z x (x) y + \psk@ThreeDplot@yThreeDunit\space div + dup % z x (x) y y + 5 1 roll % y z x (x) y + Alpha sin mul add \pst@number\psxunit mul % y z x (x2) + 4 1 roll % (x2) y z x + Alpha sin mul % (x2) y z (x) + 3 -1 roll % (x2) z (x) y + Alpha cos mul add neg Beta sin mul % (x2) z (x) + exch % (x2) (x) z + \psk@ThreeDplot@zThreeDunit\space div + Beta cos mul add \pst@number\psyunit mul % (x2) (y2) + m 1 sub 1 roll m 1 sub 1 roll /m m 3 sub def } repeat> % % listplotThreeD % @@ -1516,10 +1553,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{ \variablesIIID /D {} def mark }% #1% \addto@pscode{\tx@ScalePointsThreeD}% \@nameuse{endplot@\psplotstyle}% diff --git a/Master/texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty b/Master/texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty deleted file mode 100644 index 23c451d5d20..00000000000 --- a/Master/texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty +++ /dev/null @@ -1,8 +0,0 @@ -\RequirePackage{pstricks} -\ProvidesPackage{pst-3dplot}[2006/02/07 package wrapper for - pst-3dplot.tex (hv)] -\input{pst-3dplot.tex} -\IfFileExists{pst-3dplot.pro}{\@addtofilelist{pst-3dplot.pro}}{}% -\ProvidesFile{pst-3dplot.tex} - [\filedate\space v\fileversion\space `PST-3dplot' (hv)] -\endinput -- cgit v1.2.3