From b573709765ac7c870e6e7ee9879a552dffd9f93b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 27 Oct 2007 22:41:30 +0000 Subject: new pstricks package pst-ob3d (25nov06) git-svn-id: svn://tug.org/texlive/trunk@5292 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex | 320 +++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 Master/texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex (limited to 'Master/texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex') diff --git a/Master/texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex b/Master/texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex new file mode 100644 index 00000000000..3bd16decf80 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-ob3d/pst-ob3d.tex @@ -0,0 +1,320 @@ +%% +%% This is file `pst-ob3d.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-ob3d.dtx (with options: `pst-ob3d') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from pst-ob3d.tex. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-ob3d.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% Package `pst-ob3d.dtx' +%% +%% Denis Girou (CNRS/IDRIS - France) +%% Herbert Voss +%% +%% August 22, 2007 +%% +%% 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-ob3d' is a PSTricks package to draw basic three dimensional +%% objects with various customizations. +%% +\def\fileversion{0.21} +\def\filedate{2007/08/22} +\message{`Pst-Objects3d' v\fileversion, \filedate\space (DG,hv)} +\csname PstObjectsThreeDLoaded\endcsname +\let\PstObjectsThreeDLoaded\endinput +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +\ifx\PSTthreeDLoaded\endinput\else\input pst-3d.tex\fi +\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi +\input random.tex +\edef\PstAtCode{\the\catcode`\@} +\catcode`\@=11\relax +\pst@addfams{pst-ob3d} +\define@boolkey[psset]{pst-ob3d}[PstObjectsThreeD@]{OnlyVisibleFaces}[true]{} +\define@boolkey[psset]{pst-ob3d}[PstObjectsThreeD@]{RandomFaces}[true]{} +\define@boolkey[psset]{pst-ob3d}[PstObjectsThreeD@]{Corners}[true]{} +\define@key[psset]{pst-ob3d}{CornersColor}{\def\PstObjectsThreeD@CornersColor{#1}} +\define@key[psset]{pst-ob3d}{CornersLength}{% + \def\PstObjectsThreeD@CornersLength{#1}% + \def\PstObjectsThreeD@CornersLengthTmpA{#1}% + \def\PstObjectsThreeD@CornersLengthTmpB{#1}} +\psset[pst-ob3d]{OnlyVisibleFaces=false,RandomFaces=false, + Corners=false,CornersColor=black,CornersLength=0.15} +\def\PstCube{\@ifnextchar[{\PstCube@i}{\PstCube@i[]}} +\def\PstCube@i[#1]{\@ifnextchar({\PstCube@ii[#1]}{\PstCube@ii[#1](0,0,0)}} +\def\PstCube@ii[#1](#2,#3,#4)#5#6#7{{% +\psset{dimen=middle}% +\psset{#1}% +\ifnum\Pst@Debug=\@ne + \def\PstObjectsThreeDFaceCenterA{A}% + \def\PstObjectsThreeDFaceCenterB{B}% + \def\PstObjectsThreeDFaceCenterC{C}% + \def\PstObjectsThreeDFaceCenterD{D}% + \def\PstObjectsThreeDFaceCenterE{E}% + \def\PstObjectsThreeDFaceCenterF{F}% +\fi +\pst@expandafter\psget@@viewpoint\psk@viewpoint {} {} {} \@nil +\ifPstObjectsThreeD@Corners + \let\PstObjectsThreeD@Shape\PstObjectsThreeD@Octogon +\else + \let\PstObjectsThreeD@Shape\psframe +\fi +\ifdim\pst@dimc>\z@ + \ifdim\pst@dima>\z@ + \ifdim\pst@dimb>\z@ + \PstCube@DrawFaces{A}{E}{C}{B}{D}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \else + \PstCube@DrawFaces{E}{D}{C}{A}{B}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \fi + \else + \ifdim\pst@dimb>\z@ + \PstCube@DrawFaces{A}{B}{C}{E}{D}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \else + \PstCube@DrawFaces{D}{B}{C}{E}{A}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \fi + \fi +\else + \ifdim\pst@dima>\z@ + \ifdim\pst@dimb>\z@ + \PstCube@DrawFaces{B}{D}{C}{A}{E}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \else + \PstCube@DrawFaces{A}{B}{C}{E}{D}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \fi + \else + \ifdim\pst@dimb>\z@ + \PstCube@DrawFaces{D}{E}{C}{A}{B}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \else + \PstCube@DrawFaces{E}{A}{C}{D}{B}{F}{(#2,#3,#4)}{(#5,#6,#7)}% + \fi + \fi +\fi}} +\def\PstDie{\@ifnextchar[{\PstDie@i}{\PstDie@i[]}} +\def\PstDie@i[#1]{\@ifnextchar({\PstDie@ii[#1]}{\PstDie@ii[#1](0,0,0)}} +\def\PstDie@ii[#1](#2,#3,#4){{% +\psset{dimen=middle}% +\psset{#1}% +\ifPstObjectsThreeD@RandomFaces + \setrannum{\pst@cnth}{1}{6}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.5,.5)}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.2,.2)(.8,.8)}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.2,.2)(.5,.5)(.8,.8)}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.2,.2)(.2,.5)(.2,.8)(.8,.2)(.8,.5)(.8,.8)}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.2,.2)(.2,.8)(.5,.5)(.8,.2)(.8,.8)}% + \PstDie@Letter{\pst@cnth}{\@tempa}% + \expandafter\def\csname PstObjectsThreeDFace\@tempa\endcsname{% + \psdots(.2,.2)(.2,.8)(.8,.2)(.8,.8)}% +\else + \def\PstObjectsThreeDFaceA{\psdots(.5,.5)}% + \def\PstObjectsThreeDFaceB{\psdots(.2,.2)(.8,.8)}% + \def\PstObjectsThreeDFaceC{\psdots(.2,.2)(.5,.5)(.8,.8)}% + \def\PstObjectsThreeDFaceD{% + \psdots(.2,.2)(.2,.5)(.2,.8)(.8,.2)(.8,.5)(.8,.8)}% + \def\PstObjectsThreeDFaceE{\psdots(.2,.2)(.2,.8)(.5,.5)(.8,.2)(.8,.8)}% + \def\PstObjectsThreeDFaceF{\psdots(.2,.2)(.2,.8)(.8,.2)(.8,.8)}% +\fi +\ifPstObjectsThreeD@Corners +\else + \PstObjectsThreeD@OnlyVisibleFacestrue +\fi +\PstCube(#2,#3,#4){1}{1}{1}}} +\def\PstCube@DrawFaces#1#2#3#4#5#6#7#8{% +\ifPstObjectsThreeD@OnlyVisibleFaces +\else + \bgroup + \ifPstObjectsThreeD@Corners + \psset{linecolor=\PstObjectsThreeD@CornersColor, + fillcolor=\PstObjectsThreeD@CornersColor}% + \fi + \bgroup + \ifPstObjectsThreeD@Corners + \def\PstObjectsThreeD@CornersLengthTmpA{0}% + \fi + \expandafter\csname PstCube@DrawFace#1\endcsname#7#8 + \expandafter\csname PstCube@DrawFace#2\endcsname#7#8 + \egroup + \bgroup + \ifPstObjectsThreeD@Corners + \def\PstObjectsThreeD@CornersLengthTmpB{0}% + \fi + \expandafter\csname PstCube@DrawFace#3\endcsname#7#8 + \egroup + \egroup +\fi +\expandafter\csname PstCube@DrawFace#4\endcsname#7#8 +\expandafter\csname PstCube@DrawFace#5\endcsname#7#8 +\expandafter\csname PstCube@DrawFace#6\endcsname#7#8} +\def\PstCube@DrawFaceA(#1,#2,#3)(#4,#5,#6){% +\pst@dima=-#4\psxunit +\divide\pst@dima\tw@ +\pst@dimc=#6\psyunit +\divide\pst@dimc\tw@ +\ThreeDput[normal=0 -1 0](#1,#2,#3){% + \PstObjectsThreeD@Shape(-#4,#6) + \ifx\PstObjectsThreeDFaceA\@undefined + \else + \rput[bl](-#4,0){\PstObjectsThreeDFaceA} + \fi + \ifx\PstObjectsThreeDFaceCenterA\@undefined + \else + \rput[c](\pst@dima,\pst@dimc){\PstObjectsThreeDFaceCenterA} + \fi}} +\def\PstCube@DrawFaceB(#1,#2,#3)(#4,#5,#6){% +\pst@dimb=#5\psxunit +\divide\pst@dimb\tw@ +\pst@dimc=#6\psyunit +\divide\pst@dimc\tw@ +\ThreeDput[normal=1 0 0](#1,#2,#3){% + \PstObjectsThreeD@Shape(#5,#6) + \ifx\PstObjectsThreeDFaceB\@undefined + \else + \rput[bl](0,0){\PstObjectsThreeDFaceB} + \fi + \ifx\PstObjectsThreeDFaceCenterB\@undefined + \else + \rput[c](\pst@dimb,\pst@dimc){\PstObjectsThreeDFaceCenterB} + \fi}} +\def\PstCube@DrawFaceC(#1,#2,#3)(#4,#5,#6){% +\pst@dimg=-#4\psxunit +\advance \pst@dimg by #1\psxunit +\pst@dima=#4\psxunit +\divide\pst@dima\tw@ +\pst@dimb=#5\psxunit +\divide\pst@dimb\tw@ +\ThreeDput[normal=0 0 1](\pst@dimg,#2,#3){{% + \psyunit=\psxunit + \PstObjectsThreeD@Shape(#4,#5) + \ifx\PstObjectsThreeDFaceC\@undefined + \else + \rput[bl](0,0){\PstObjectsThreeDFaceC} + \fi + \ifx\PstObjectsThreeDFaceCenterC\@undefined + \else + \rput[c](\pst@dima,\pst@dimb){\PstObjectsThreeDFaceCenterC} + \fi}}} +\def\PstCube@DrawFaceD(#1,#2,#3)(#4,#5,#6){% +\pst@dimg=#5\psxunit +\advance \pst@dimg by #2\psyunit +\pst@dima=-#4\psxunit +\divide\pst@dima\tw@ +\pst@dimc=#6\psyunit +\divide\pst@dimc\tw@ +\ThreeDput[normal=0 -1 0](#1,\pst@dimg,#3){% + \PstObjectsThreeD@Shape(-#4,#6) + \ifx\PstObjectsThreeDFaceD\@undefined + \else + \rput[bl](-#4,0){\PstObjectsThreeDFaceD} + \fi + \ifx\PstObjectsThreeDFaceCenterD\@undefined + \else + \rput[c](\pst@dima,\pst@dimc){\PstObjectsThreeDFaceCenterD} + \fi}} +\def\PstCube@DrawFaceE(#1,#2,#3)(#4,#5,#6){% +\pst@dimg=-#4\psxunit +\advance \pst@dimg by #1\psxunit +\pst@dimb=#5\psxunit +\divide\pst@dimb\tw@ +\pst@dimc=#6\psyunit +\divide\pst@dimc\tw@ +\ThreeDput[normal=1 0 0](\pst@dimg,#2,#3){% + \PstObjectsThreeD@Shape(#5,#6) + \ifx\PstObjectsThreeDFaceE\@undefined + \else + \rput[bl](0,0){\PstObjectsThreeDFaceE} + \fi + \ifx\PstObjectsThreeDFaceCenterE\@undefined + \else + \rput[c](\pst@dimb,\pst@dimc){\PstObjectsThreeDFaceCenterE} + \fi}} +\def\PstCube@DrawFaceF(#1,#2,#3)(#4,#5,#6){% +\pst@dimg=-#4\psxunit +\advance \pst@dimg by #1\psxunit +\pst@dimh=#6\psyunit +\advance \pst@dimh by #3\psyunit +\pst@dima=#4\psxunit +\divide\pst@dima\tw@ +\pst@dimb=#5\psxunit +\divide\pst@dimb\tw@ +\ThreeDput[normal=0 0 1](\pst@dimg,#2,\pst@dimh){{% + \psyunit=\psxunit + \PstObjectsThreeD@Shape(#4,#5) + \ifx\PstObjectsThreeDFaceF\@undefined + \else + \rput[bl](0,0){\PstObjectsThreeDFaceF} + \fi + \ifx\PstObjectsThreeDFaceCenterF\@undefined + \else + \rput[c](\pst@dima,\pst@dimb){\PstObjectsThreeDFaceCenterF} + \fi}}} +\def\psget@@viewpoint#1 #2 #3 #4\@nil{% +\pssetxlength{\pst@dima}{#1}% +\pssetylength{\pst@dimb}{#2}% +\pssetzlength{\pst@dimc}{#3}} +\def\PstObjectsThreeD@Octogon(#1,#2){% +\pst@dimh=\PstObjectsThreeD@CornersLength pt +\multiply\pst@dimh#1 +\pst@dimtonum{\pst@dimh}{\pst@tempa}% +\pst@dimh=\PstObjectsThreeD@CornersLengthTmpB pt +\multiply\pst@dimh#1 +\pst@dimtonum{\pst@dimh}{\pst@tempg}% +\pst@dimh=\@ne pt +\advance\pst@dimh-\PstObjectsThreeD@CornersLength pt +\multiply\pst@dimh#1 +\pst@dimtonum{\pst@dimh}{\pst@tempb}% +\pst@dimh=\@ne pt +\advance\pst@dimh-\PstObjectsThreeD@CornersLengthTmpA pt +\multiply\pst@dimh#1 +\pst@dimtonum{\pst@dimh}{\pst@tempe}% +\pst@dimh=\PstObjectsThreeD@CornersLength pt +\multiply\pst@dimh#2 +\pst@dimtonum{\pst@dimh}{\pst@tempc}% +\pst@dimh=\PstObjectsThreeD@CornersLengthTmpA pt +\multiply\pst@dimh#2 +\pst@dimtonum{\pst@dimh}{\pst@tempf}% +\pst@dimh=\@ne pt +\advance\pst@dimh-\PstObjectsThreeD@CornersLength pt +\multiply\pst@dimh#2 +\pst@dimtonum{\pst@dimh}{\pst@tempd}% +\pst@dimh=\@ne pt +\advance\pst@dimh-\PstObjectsThreeD@CornersLengthTmpB pt +\multiply\pst@dimh#2 +\pst@dimtonum{\pst@dimh}{\pst@temph}% +\pspolygon(\pst@tempa,0)(\pst@tempe,0)(#1,\pst@tempf)(#1,\pst@tempd) + (\pst@tempb,#2)(\pst@tempg,#2)(0,\pst@temph)(0,\pst@tempc)} +\def\PstDie@Letter#1#2{% +\advance#1\@ne +\ifnum#1>6 + #1=\@ne +\fi +\def#2{\ifcase#1\or A\or B\or C\or D\or E\or F\fi}} +\catcode`\@=\PstAtCode\relax +\endinput +%% +%% End of file `pst-ob3d.tex'. -- cgit v1.2.3