summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-03-22 03:00:48 +0000
committerNorbert Preining <norbert@preining.info>2020-03-22 03:00:48 +0000
commit75d8dfa80524727ddb7d8ae217ed6463efba84cf (patch)
treea1a1db248828dd36aecb1697d64d28a2ff813d29 /graphics
parent3e43bc594a14e8c4fc21d6a71f22a23dd78fe252 (diff)
CTAN sync 202003220300
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/Changes23
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/Makefile48
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/README48
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.bib129
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.pdfbin4588365 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.tex1266
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d.pro2092
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d.sty8
-rw-r--r--graphics/pstricks/contrib/pst-vue3d/pst-vue3d.tex1640
9 files changed, 0 insertions, 5254 deletions
diff --git a/graphics/pstricks/contrib/pst-vue3d/Changes b/graphics/pstricks/contrib/pst-vue3d/Changes
deleted file mode 100644
index e4bb5d2241..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/Changes
+++ /dev/null
@@ -1,23 +0,0 @@
------ pst-vue3d.tex
-1.24 2008-02-21 hv: draw circles for 360 degrees instead of 359
-1.23 2007-03-26 hv: load pst-vue3d.pro instead of 3d.pro
-1.22 2005-05-10 hv: make the unit option available
-1.21 2005-02-21 hv: use always pst-xkey and using \def instead
- of \edef for the parameter definitions
-1.2 2004-09-12 hv: use always \pst@object for the definition
- of the 3d objects
-1.1 2004-08-23 hv: use the default macro style of pstricks
-1.0i 2004-06-05 hv: fixed bug
-1.0h 2004-01-05 ml: added dodecaedron
-1.0g 2003-12-21 hv: fixed a bug in \pNodeThreeD
-1.0f 2003-12-20 hv: added two eye macros, drop the options for
- CX,CY,CZ and Xorigine,...
- added option SphericalCoor and modify all
- macros to use it
-1.0e 2003-12-18 hv: edit the \AxesThreeD macro
-1.0d 2003-12-18 hv: fix bug in truncated pyramid
-
-
------ pst-vue3d.pro
-33 2007-03-26 hv: renamed to pst-vue3d.pro
-32 2005-05-10 hv: make the unit option available
diff --git a/graphics/pstricks/contrib/pst-vue3d/Makefile b/graphics/pstricks/contrib/pst-vue3d/Makefile
deleted file mode 100644
index 1eac89064a..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/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-vue3d
-
-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/graphics/pstricks/contrib/pst-vue3d/README b/graphics/pstricks/contrib/pst-vue3d/README
deleted file mode 100644
index 12ea4dd201..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/README
+++ /dev/null
@@ -1,48 +0,0 @@
-%% Package `pst-vue3d.tex'
-%%
-%% Herbert Voss <voss _at_ pstricks.de> (Germany)
-%%
-%% 2007-03-26
-%%
-
-PSTricks offers excellent macros to insert more or less complex
-graphics into a document. pstricks.tex itself is the base for several
-other additional packages, which are mostly named pst-xxxx,
-like pst-vue3d. There exists several packages for plotting three
-dimensional graphical objects. pst-vue3d is similiar to the
-pst-plot package for two dimensional objects and mathematical functions.
-
-
-Save the files
-
-pst-vue3d.sty
-pst-vue3d.tex
-pst-vue3d.pro
-
-in any place, where latex or any other TeX program will find it.
-The pro file should go into $TEXMF$/dvips/pstricks/.
-
-pst-vue3d 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 after pst-vue3d, which loads
- the old keyval.sty or pst-key.tex
-
-
-If you like to get the documentation file in another format run
-
-latex pst-vue3d-doc.tex
-bibtex pst-vue3d.doc
-latex pst-vue3d-doc.tex
-dvips pst-vue3d-doc.dvi
-
-to get a PostScript file. But pay attention, that the pst-vue3d
-files are saved in the above mentioned way, before you run
-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
-the documentation.
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.bib b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.bib
deleted file mode 100644
index 3b785845e2..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.bib
+++ /dev/null
@@ -1,129 +0,0 @@
-@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} }
-
-@Book{PostScript,
- Author = {Kollock, Nikolai G.},
- Title = {PostScript richtig eingesetzt: vom Konzept zum
- praktischen Einsatz},
- Publisher = {IWT},
- Address = {Vaterstetten},
- year = 1989,
-}
-
-@Manual{pstricks,
- Title = {PSTricks - {\PS} macros for Generic TeX},
- Author = {Timothy Van Zandt},
- Organization = {},
- Address = {\url{http://www.tug.org/application/PSTricks}},
- Note = {},
- year = 1993,
-}
-
-
-@Manual{pdftricks,
- Title = {PSTricks Support for pdf},
- Author = {Herbert Voss},
- Organization = {},
- Address = {\url{http://PSTricks.de/pdf/pdfoutput.phtml}},
- Note = {},
- year = 2002,
-}
-
-@Manual{miwi,
- Title = {References for \TeX{} and Friends},
- Author = {Michael Wiedmann and Peter Karp},
- Organization = {},
- Address = {\url{http://www.miwie.org/tex-refs/}},
- Note = {},
- year = 2003,
-}
-
-
-@Manual{pstlens:2001,
- Title = {PST-lens - {\PS} macros for Generic TeX},
- Author = {Denis Girou and Manuel Luque},
- Organization = {},
- Address = {\url{ftp://ftp.dante.de/tex-archive/graphics/pstricks/contrib/pst-lens/}},
- Note = {},
- year = 2001,
-}
-
-@Manual{vue3d:2002,
- Title = {Vue en 3D},
- Author = {Manuel Luque},
- Organization = {},
- Address = {\url{http://members.aol.com/Mluque5130/vue3d16112002.zip}},
- Note = {},
- year = 2002,
-}
-
-@Article{dtk02.2:jackson.voss:plot-funktionen,
- author = {Laura E. Jackson and Herbert Vo{\ss}},
- title = {Die {P}lot-{F}unktionen von {\texttt{pst-plot}}},
- journal = dtk,
- year = 2002,
- volume = {2/02},
- altvolume = 2,
- altnumber = 14,
- month = jun,
- pages = {27--34},
- annote = bretter,
- keywords = {},
- abstract = { Im letzten Heft wurden die mathematischen Funktionen von
- \PS~im Zusammenhang mit dem {\LaTeX}-Paket
- \texttt{pst-plot} zum Zeichnen von Funktionen beschrieben
- und durch Beispiele erl{\"a}utert. In diesem Teil werden
- die bislang nur erw{\"a}hnten Plot-Funktionen f{\"u}r
- externe Daten behandelt. }
-}
-
-@Article{dtk02.1:voss:mathematischen,
- author = {Herbert Vo{\ss}},
- title = {Die mathematischen {F}unktionen von {P}ostscript},
- journal = dtk,
- year = 2002,
- volume = {1/02},
- altvolume = 1,
- altnumber = 14,
- month = mar,
- pages = {40-47},
- annote = bretter,
- keywords = {},
- abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im
- Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es
- darum geht zu beurteilen, was es denn nun im eigentlichen
- Sinne ist. Au{\ss}erdem wird h{\"a}ufig vergessen, dass
- sich mit den \PS-Funktionen viele Dinge erledigen lassen,
- bei denen sonst auf externe Programme zur{\"u}ckgegriffen
- wird. Dies wird im Folgenden f{\"u}r die mathematischen
- Funktionen im Zusammenhang mit dem Paket \texttt{pst-plot}
- gezeigt. }
-}
-
-
-@Book{companion,
- author = {Michel Goosens and Frank Mittelbach and Alexander
- Samarin},
- title = {The {\LaTeX} {G}raphics {C}ompanion},
- publisher = {{Addison-Wesley Publishing Company}},
- year = {2004},
- edition = {2.},
- address = {Reading, Mass.}
-}
-
-@Book{PSTricks2,
- author = {Herbert Vo\ss},
- title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
- edition = {4.},
- publisher = {DANTE -- Lehmanns},
- year = {2007},
- address = {Heidelberg/Hamburg}
-}
-
-@Book{voss:math,
- author = {Herbert Vo\ss},
- title = {\LaTeX\ in {M}athematik und {N}aturwissenschaften},
- publisher = {{Franzis-Verlag}},
- year = {2006},
- address = {Poing}
-}
-
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.pdf b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.pdf
deleted file mode 100644
index 8f43cdafea..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.tex b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.tex
deleted file mode 100644
index e0808473fc..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d-doc.tex
+++ /dev/null
@@ -1,1266 +0,0 @@
-\listfiles
-\documentclass[english]{article}
-\usepackage[T1]{fontenc}
-\usepackage[latin1]{inputenc}
-\usepackage{lmodern}% only for PDF output
-%\usepackage[scaled=0.9]{luximono}
-\usepackage[a4paper,bmargin=2cm,tmargin=2cm]{geometry}
-\usepackage{url}
-\usepackage{morefloats}
-\setcounter{totalnumber}{10}
-\setcounter{dbltopnumber}{10}
-\renewcommand{\textfraction}{0}
-\usepackage{subfig}
-% Mluque5130@aol.com
-% 17 octobre 2003
-% Herbert Voss <voss@pstricks.de>
-% March 2007
-\def\UrlFont{\small\ttfamily}
-\makeatletter
-\def\verbatim@font{\small\normalfont\ttfamily}
-\makeatother
-\usepackage[colorlinks,linktocpage]{hyperref}
-\usepackage[english]{babel}
-\usepackage{pstricks,multido,pst-grad}
-\usepackage{pst-vue3d}
-\let\VueFversion\fileversion
-\usepackage{showexpl}
-\def\PS{PostScript}
-%
-\definecolor{GrisClair} {rgb}{0.6,0.7,0.8}
-\definecolor{GrisTresClair} {rgb}{0.8,0.9,0.7}
-\definecolor{GrayA} {rgb}{0.35,0.95,0.95}
-\definecolor{GrayB} {rgb}{0.85,0.85,0.35}
-\definecolor{GrayC} {rgb}{0.75,0.35,0.55}
-\definecolor{GrayD} {rgb}{0.65,0.65,0.65}
-\definecolor{GrayE} {rgb}{0.7,0.9,0.65}
-\definecolor{LightBlue}{rgb}{.68,.85,.9}
-%
-\newcommand\tapis{%
- \psset{normaleLatitude=90,normaleLongitude=0}
- \FrameThreeD[fillcolor=green,fillstyle=solid](0,0,-5)(-20,-20)(20,20)
- \QuadrillageThreeD[grille=10](0,0,-5)(-20,-20)(20,20)%
-}
-%
-\def\Table{{%
- \CubeThreeD[A=30,B=30,C=2,CubeColorFaceOne={.7 .6 .5}](0,0,-2)
- \psset{normaleLongitude=0,normaleLatitude=90}
- \QuadrillageThreeD[linewidth=0.2mm,linecolor=white,%
- grille=5](0,0,0)(-30,-30)(30,30)
-}}
-%
-\def\DessusTable{{%
- \psset{normaleLongitude=0,normaleLatitude=90}
- \QuadrillageThreeD[linewidth=0.2mm,linecolor=gray,%
- grille=5](0,0,0)(-30,-30)(30,30)%
-}}
-\def\PlansOXYZ{{%
- \psset{normaleLongitude=0,normaleLatitude=90}
- \FrameThreeD[fillstyle=solid,fillcolor=GrisClair](0,0,0)(-50,0)(0,50)
- \QuadrillageThreeD[linewidth=0.2mm,grille=10](0,0,0)(-50,0)(0,50)%
- \psset{normaleLongitude=90,normaleLatitude=0}
- \FrameThreeD[fillstyle=solid,fillcolor=GrisTresClair](0,0,0)(0,0)(50,-50)
- \QuadrillageThreeD[linewidth=0.2mm,grille=10](0,0,0)(0,-50)(50,0)%
- \psset{normaleLongitude=0,normaleLatitude=0}
- \FrameThreeD[fillstyle=solid,fillcolor=GrisTresClair](0,0,0)(-50,0)(0,-50)
- \QuadrillageThreeD[linewidth=0.2mm,grille=10](0,0,0)(-50,-50)(0,0)%
- }}
-\psset{CubeColorFaceOne=1 1 1,%
- CubeColorFaceTwo=1 0 0,%
- CubeColorFaceThree=0 1 0,%
- CubeColorFaceFour=0 0 1,%
- CubeColorFaceFive=1 1 0,%
- CubeColorFaceSix=0 1 1}
-%
-\def\hexagon{%
-\begin{pspicture}(-2.2,-2.2)(2.2,2)
- \Table
- \pNodeThreeD(-8.66,-5,0){A6}
- \pNodeThreeD(-8.66,5,0){A1}
- \pNodeThreeD(0,10,0){A2}
- \pNodeThreeD(8.66,5,0){A3}
- \pNodeThreeD(8.66,-5,0){A4}
- \pNodeThreeD(0,-10,0){A5}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)}
- \DessusTable
- \endpsclip
- \psset{A=5,B=5,C=5}
- \CubeThreeD[RotZ=60](-6.83,-11.830,5)%6
- \CubeThreeD[RotZ=120](6.83,-11.830,5)%5
- \CubeThreeD(-13.86,0,5)%1
- \CubeThreeD[RotZ=-60](-6.83,11.830,5)%2
- \CubeThreeD[RotZ=-120](6.83,11.830,5)%3
- \CubeThreeD[RotZ=180](13.86,0,5)%4
-\end{pspicture}%
-}
-%
-\def\stardodecagon{%
- \begin{pspicture}(-2.2,-2)(2.2,2.2)
- \Table
- \pNodeThreeD(-6.83,-11.83,0){A6}%
- \pNodeThreeD(-13.86,0,0){A1}%
- \pNodeThreeD(-6.83,11.83,0){A2}%
- \pNodeThreeD(6.83,11.83,0){A3}%
- \pNodeThreeD(13.86,0,0){A4}%
- \pNodeThreeD(6.83,-11.83,0){A5}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)}
- \DessusTable
- \endpsclip%
- \psset{A=5,B=5,C=5}
- \CubeThreeD[RotZ=105](-10.6066,6.12372,5)%2
- \CubeThreeD[RotZ=45](0,12.2474,5)%1
- \CubeThreeD[RotZ=345](10.6066,6.12372,5)%6
- \CubeThreeD[RotZ=165](-10.6066,-6.12372,5)%3
- \CubeThreeD[RotZ=225](0,-12.2474,5)%4
- \CubeThreeD[RotZ=285](10.6066,-6.12372,5)%5
-\end{pspicture}}
-%
-\def\pentagon{%
- \begin{pspicture}(-2.2,-2.2)(2.2,2.2)
- \Table
- \pNodeThreeD(8.5065,0,0){A1}%
- \pNodeThreeD(2.6287,8.09,0){A2}%
- \pNodeThreeD(-6.882,5,0){A3}%
- \pNodeThreeD(-6.882,-5,0){A4}%
- \pNodeThreeD(2.6287,-8.09,0){A5}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)}
- \DessusTable
- \endpsclip%
- \psset{A=5,B=5,C=5}
- \CubeThreeD(-11.88,0,5)%1
- \CubeThreeD[RotZ=72](-3.617,-11.3,5)%5
- \CubeThreeD[RotZ=-72](-3.617,11.3,5)%2
- \CubeThreeD[RotZ=-144](9.61267,6.984,5)%3
- \CubeThreeD[RotZ=144](9.61267,-6.984,5)%4
-\end{pspicture}}
-%
-\def\stardecagon{%
- \begin{pspicture}*(-2.2,-1.75)(2.2,2.2)
- \Table
- \pNodeThreeD(-12.03,0,0){A1}%
- \pNodeThreeD(-3.7178,-11.44,0){A2}%
- \pNodeThreeD(9.7325,-7.071,0){A3}%
- \pNodeThreeD(9.7325,7.071,0){A4}%
- \pNodeThreeD(-3.7178,11.44,0){A5}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)}
- \DessusTable
- \endpsclip%
- \psset{A=5,B=5,C=5}
- \CubeThreeD[RotZ=81](-7.87375,-5.72061,5)%4
- \CubeThreeD[RotZ=9](-7.87375,5.72061,5)%3
- \CubeThreeD[RotZ=153](3.0075,-9.2561,5)%5
- \CubeThreeD[RotZ=-63](3.0075,9.25615,5)%2
- \CubeThreeD[RotZ=-135](9.73249,0,5)%1
-\end{pspicture}%
-}
-\def\octogon{%
- \begin{pspicture}(-2.2,-2.2)(2.2,2.2)
- \Table
- \pNodeThreeD(12.07,5,0){A1}%
- \pNodeThreeD(5,12.07,0){A2}%
- \pNodeThreeD(-5,12.07,0){A3}%
- \pNodeThreeD(-12.07,5,0){A4}%
- \pNodeThreeD(-12.07,-5,0){A5}%
- \pNodeThreeD(-5,-12.071,0){A6}%
- \pNodeThreeD(5,-12.07,0){A7}%
- \pNodeThreeD(12.07,-5,0){A8}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)(A7)(A8)}
- \DessusTable
- \endpsclip%
- \psset{A=5,B=5,C=5}
- \CubeThreeD(-17.07,0,5)%5
- \CubeThreeD[RotZ=45](-12.07,-12.07,5)%6
- \CubeThreeD[RotZ=90](0,-17.07,5)%7
- \CubeThreeD[RotZ=135](12.07,-12.07,5)%8
- \CubeThreeD[RotZ=-45](-12.07,12.07,5)%4
- \CubeThreeD[RotZ=-90](0,17.07,5)%3
- \CubeThreeD[RotZ=-135](12.07,12.07,5)%2
- \CubeThreeD[RotZ=180](17.07,0,5)%1
-\end{pspicture}%
-}
-%
-\def\starhexadecagon{%
- \begin{pspicture}(-2.2,-2)(2.2,2.2)
- \Table
- \pNodeThreeD(17.07,7.07,0){A1}%
- \pNodeThreeD(7.07,17.07,0){A2}%
- \pNodeThreeD(-7.07,17.07,0){A3}%
- \pNodeThreeD(-17.07,7.07,0){A4}%
- \pNodeThreeD(-17.07,-7.07,0){A5}%
- \pNodeThreeD(-7.07,-17.07,0){A6}%
- \pNodeThreeD(7.07,-17.07,0){A7}%
- \pNodeThreeD(17.07,-7.07,0){A8}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)(A7)(A8)}
- \DessusTable
- \endpsclip%
- \psset{A=5,B=5,C=5}
- \CubeThreeD[RotZ=225](-17.07,0,5)%5
- \CubeThreeD[RotZ=-90](-12.07,-12.07,5)%6
- \CubeThreeD[RotZ=-45](0,-17.07,5)%7
- \CubeThreeD(12.07,-12.07,5)%8
- \CubeThreeD[RotZ=180](-12.07,12.07,5)%4
- \CubeThreeD[RotZ=135](0,17.07,5)%3
- \CubeThreeD[RotZ=90](12.07,12.07,5)%2
- \CubeThreeD[RotZ=45](17.07,0,5)%1
-\end{pspicture}}
-%
-\def\DecorSable{%
- \FrameThreeD[normaleLongitude=0,normaleLatitude=90,%
- fillstyle=solid,fillcolor=GrayE](0,0,0)(-60,-60)(60,60)
- \QuadrillageThreeD[normaleLongitude=0,normaleLatitude=90,%
- linecolor=GrayA,linewidth=0.2mm,grille=10](0,0,0)(-60,-60)(60,60)%
-}
-\newpsstyle{GradGrayWhite}{fillstyle=gradient,%
- gradbegin=blue,gradend=white,linewidth=0.1mm}%
-
-\begin{document}
-
-\title{3D views with \texttt{pst-vue3d}\\[3ex]
- \normalsize (v. \VueFversion)}
-\author{Manuel Luque\thanks{\url{mluque5130 _at_ aol.com}}\
-and Herbert Vo\ss\thanks{\url{voss _at_ pstricks.de}}}
-
-\maketitle
-\tableofcontents
-\clearpage
-
-\section{Presentation}
-The 3D representation of an object or a landscape is one of the
-most interesting subject in computer science and have many
-industrial applications (car and plane design, video game
-etc\ldots). In a smaller way, one can obtain very didactic
-realizations using PSTricks with two peculiarities:
-\begin{itemize}
- \item using PostScript;
- \item being manageable through \LaTeX.
-\end{itemize}
-Package \texttt{pst-key} of David \textsc{Carlisle} allows to
-write commands with parameters. Using this as an interface, one
-can observe the result of little modifications of some parameters.
-Our parameters being here: the position of the watcher, the choice
-of an solid (cube, sphere etc\ldots) and many other things. I want
-to signal that
-\begin{itemize}
-\item
-Regarding 3D representation, one does not forget the package pst-3d by Timothy Van Zandt
-who has used the best part of Post\-Script. Althrought limited to parallel projections,
-this package allows to draw very interesting 3D figure.\footnote{A lot of different examples
-for 3D images are available at: \url{http://members.aol.com/Mluque5130/}}
-\item Thanks to Denis \textsc{Girou}, i have discovered the
-package \texttt{pst-xkey} and I have learned it.
-\item I have written another package for drawing picture reflecting
-in spherical mirrors.%
-\footnote{\url{http://melusine.eu.org/syracuse/mluque/BouleMiroir/boulemiroir.html}}
-
-It is a french paper which illustrate a study of Pr. Henri
-\textsc{Bouasse} from this book \textit{Optique sup\'erieure}, edited in $1917$ by Delagrave.
-\end{itemize}
-
-
-\section{Aims}
-First, we want to draw the 3D representation with elimination of
-the hidden parts of some objects.
-
-The position of the watcher will be defined by its spherical
-coordinates: the distances from the origin, the longitude $\theta$
-and the latitude $\phi$. We will choose, too, the distance of the
-projection screen from this point.
-
-Second, we want to define some $3D$ elements of the scene: the bricks.
-
-The following bricks are already defined
-\begin{itemize}
-\item A box given by its three dimensions \verb+A,B,C+: it could
-be turn into a cube or a dice.
-\item A point which can be defined it two ways
-\begin{itemize}
-\item By cartesian coordinates $(x,y,z)$
-\item Or by spherical coordinates $(R,\theta,\phi)$
- ($\theta$, $\phi$ are, respectively, longitude and latitude).
-\end{itemize}
-\item A rectangle.
-\item A circle defined by the normal line to its plane, its center
-and its radius. An arc is defined as the circle with two limit
-angles.
-\item A tetrahedron given by the coordinates of the center of its
-base and the radius of the circle containing the vertex of each
-faces. We can make it rotate.
-\item A square pyramid given by the half of the length of the side
-of its base and its height. We can make it rotate and move.
-\item A sphere given by the coordinates of its center \verb+\SphereThreeD(x,y,z){Radius}+
-and its radius. We can make it rotate with the parameters
-\verb+RotX=...+, \verb+RotY=...+, \verb+RotZ=...+ We can choose to
-draw only some meridians and parallel circles.
- \item A solid or empty half-sphere (same parameters than a sphere)
- \item A vertical cylinder defined by its radius and its height. We
- can make it rotate using the parameters \verb+RotX=...+, \verb+RotY=...+, \verb+RotZ=...+
- An we can choose the center of its base in the same way than the Sphere.
-\item A cone and a truncated cone defined by the radius of their
-base, the height and the height of the truncature.
-\end{itemize}
-
-\vspace*{1cm}
-To construct a scene, one may choose himself the order of the
-objects. For example, if an object 1 is partially hidden by an
-object 2, we write, in the list of commands, first object 1 and
-second object 2.
-
-\section{Rotating in the 3D space}
-
-A 3D object can be rotated around every axes with the \verb+RotX+, \verb+RotY+ and
-\verb+RotZ+ option. They can be mixed in every combination. Figure~\ref{fig:rot} shows
-how a rotation around the z-axes works.
-
-\begin{figure}[!htb]
-\multido{\iRotZ=0+45}{8}{%
- \begin{pspicture}(-1.5,-1.5)(1.5,1.5)
- \psset{THETA=70,PHI=30,Dobs=200,Decran=10}
- \psset{A=5,B=5,C=A,fillstyle=solid,fillcolor=GrisClair,%
- linecolor=red, RotZ=\iRotZ}
- \tapis\DieThreeD(0,0,0)%
- \LineThreeD[linecolor=red,linestyle=dashed,arrows=->](0,0,0)(0,0,25)
- \pNodeThreeD(0,0,12.5){Z'}
- \uput[180](Z'){\texttt{RotZ=\iRotZ}}
- \end{pspicture}\hfill %
-}
-
-\psset{THETA=-10,PHI=20,Dobs=200,Decran=10}
-\multido{\iCX=0+30}{8}{%
- \begin{pspicture}(-1.5,-1.5)(1.5,1.5)
- \AxesThreeD{->}(50,20,20)
- \psset{A=20,B=5,C=10,fillstyle=solid,fillcolor=LightBlue,linecolor=gray}
- \psset{RotZ=0,RotY=0,RotX=\iCX}
- \CubeThreeD(0,0,0)%
- \psset{linestyle=dashed}
- \end{pspicture}\hfill%
-}%
-\caption{Diffenerent views of a die and a cube\label{fig:rot}}
-\end{figure}
-
-
-\section{Location of the cube in the space}
-Suppose that one wants to place a 10-units edge cube at the point
-$(x=40,y=40,z=35)$. First, the half edge of the cube will be
-define by the parameters : \verb+A=5,B=5,C=5+, and next the
-coordinates of its center by \texttt{(40,40,35)}. On the
-figure, the period of the grid is 10~units
-(figure~\ref{coordinates}).
-
-\begin{figure}[!htb]
-\centering
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=30,PHI=30,Dobs=200,Decran=12}
-\begin{pspicture}(-2.8,-3)(3.5,3.5)
- \PlansOXYZ
- \pNodeThreeD(40,40,35){G}
- \pNodeThreeD(40,40,0){G_XY}
- \pNodeThreeD(40,0,0){G_X}
- \pNodeThreeD(0,40,0){G_Y}
- \pNodeThreeD(0,0,35){G_Z}
- \pNodeThreeD(0,40,35){G_YZ}
- \pNodeThreeD(40,0,35){G_XZ}
- \psdots(G)(G_XY)(G_XZ)(G_YZ)(G_X)(G_Y)(G_Z)
- \psline(G)(G_XY)
- \psline(G)(G_XZ)
- \psline(G)(G_YZ)
- \psline(G_Z)(G_XZ)
- \psline(G_Z)(G_YZ)
- \AxesThreeD{->}(55)
-\end{pspicture}
-\end{LTXexample}
-\caption{\label{coordinates}Origin \texttt{(40,40,35)}}
-\end{figure}
-
-\begin{figure}[!ht]
-\centering
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=30,PHI=30,Dobs=200,Decran=12}
-\begin{pspicture}(-2.8,-3)(3.5,3.5)
- \PlansOXYZ
- \pNodeThreeD(40,40,35){G}
- \pNodeThreeD(40,40,0){G_XY}
- \pNodeThreeD(40,0,0){G_X}
- \pNodeThreeD(0,40,0){G_Y}
- \pNodeThreeD(0,0,35){G_Z}
- \pNodeThreeD(0,40,35){G_YZ}
- \pNodeThreeD(40,0,35){G_XZ}
- \psdots(G)(G_XY)(G_XZ)(G_YZ)(G_X)(G_Y)(G_Z)
- \psline(G)(G_XY)
- \psline(G)(G_XZ)
- \psline(G)(G_YZ)
- \psline(G_Z)(G_XZ)
- \psline(G_Z)(G_YZ)
- \psset{A=5,B=5,C=5}
- \DieThreeD(40,40,35)%
- \AxesThreeD{->}(55)
-\end{pspicture}
-\end{LTXexample}
-\caption{\label{CubeOne}The placed cube.}
-\end{figure}
-
-
-To make it rotate of around $OX$ , one adds the parameter \verb+RotX=90+(figure~\ref{RotX}).
-
-\begin{figure}[!ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=30,PHI=30,Dobs=200,Decran=12}
-\begin{pspicture}(-2.8,-3)(3.5,3.5)
- \PlansOXYZ
- \AxesThreeD{->}(55)
- \psset{A=5,B=5,C=5,RotX=90}
- % projections sur les plaans
- \DieThreeD(40,40,5)%
- \DieThreeD(5,40,35)%
- \DieThreeD(40,5,35)%
- \pNodeThreeD(40,40,35){G}
- \pNodeThreeD(40,40,10){G_XY}
- \pNodeThreeD(10,40,35){G_YZ}
- \pNodeThreeD(40,10,35){G_XZ}
- \psline(G)(G_XY)
- \psline(G)(G_XZ)
- \psline(G)(G_YZ)
- \DieThreeD(40,40,35)%
-\end{pspicture}
-\end{LTXexample}
-\caption{\label{RotX} 90\textsuperscript{o} rotation around $OX$ and plane projections.}
-\end{figure}
-
-
-Three successive rotations around three axes with: \verb+RotX=60,RotY=20,RotZ=110+, are illustrate in figure~\ref{RotXYZ}.
-
-\begin{figure}[!ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=30,PHI=30,Dobs=200,Decran=12}
-\begin{pspicture}(-2.8,-3)(3.5,3.5)
- \PlansOXYZ
- \AxesThreeD(55)
- \DieThreeD[A=5,B=5,C=5,RotX=30,RotY=20,RotZ=150](40,40,35)%
-\end{pspicture}
-\end{LTXexample}
-\caption{\label{RotXYZ}rotations around $OX$, $OY$ et $OZ$: \texttt{RotX=60,RotY=20,RotZ=110}.}
-\end{figure}
-
-\section{Constructions using cubes}
-This section was done after a book first published in 1873 and
-titled:
-
-\begin{figure}[!ht]
-\centering
-\psframebox{%
-\begin{pspicture}(-3.1,-3.8)(3.1,3)
-\rput(0,2.6){M\'ETHODE INTUITIVE}
-\rput(0,2){\Large EXERCICES ET TRAVAUX}
-\rput(0,1.5){POUR LES ENFANTS}
-\rput(0,1){\tiny SELON LA M\'ETHODE ET LES PROC\'ED\'ES}
-\rput(0,0){de \textbf{PESTALOZZI et FR\OE{}BEL}}
-\rput(0,-1){M\textsuperscript{me} FANNY DELON}
-\rput(0,-1.5){\tiny Directrice d'une \'Ecole professionnelle \`a Paris}
-\rput(0,-2){M. CH. DELON}
-\rput(0,-2.5){\tiny Licenci\'e \`es sciences}
-\rput(0,-3){PARIS}
-\rput(0,-3.5){1873}
-\end{pspicture}}
-\end{figure}
-
-for children at infant school! One can not be surprised that
-theses kinds of pedagogue gave rise to the generation of Eintein,
-Maxwell, Bohr etc.
-
-
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=15,PHI=50,Dobs=200,Decran=15}
-\hexagon
-\end{LTXexample}
-\caption{\label{hexagone}hexagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=15,PHI=50,Dobs=200,Decran=15}%
-\stardodecagon
-\end{LTXexample}
-\caption{\label{dodecagone}star dodecagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=-15,PHI=50,Dobs=200,Decran=15}
-\pentagon
-\end{LTXexample}
-\caption{\label{pentagone}pentagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=-15,Decran=10,Dobs=100,PHI=75}
-\stardecagon
-\end{LTXexample}
-\caption{\label{decagone}star decagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=20,PHI=75,Decran=10,Dobs=100}
-\begin{pspicture*}(-2.5,-2.5)(2.5,2)
-\Table
-\psset{A=5,B=5,C=5}
-\CubeThreeD(-7.88675,0,5)%1
-\CubeThreeD[RotZ=-120](3.94338,6.83,5)%2
-\CubeThreeD[RotZ=120](3.94338,-6.83,5)%3
-\end{pspicture*}
-\end{LTXexample}
-\caption{\label{triangle}triangle.}
-\end{figure}
-
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=-15,PHI=50,Decran=10,Dobs=150}
-\octogon
-\end{LTXexample}
-\caption{\label{octogone}octogon.}
-\end{figure}
-
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=-15,Decran=10,Dobs=150,PHI=75}
-\starhexadecagon
-\end{LTXexample}
-\caption{\label{hexadecagon}star hexadecagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\begin{LTXexample}[width=0.45\linewidth]
-\psset{THETA=-15,Decran=10,Dobs=150,PHI=75}
-\begin{pspicture}(-2.2,-1.75)(2.2,2.2)
- \Table
- \pNodeThreeD(-8.66,-5,0){A6}
- \pNodeThreeD(-8.66,5,0){A1}
- \pNodeThreeD(0,10,0){A2}
- \pNodeThreeD(8.66,5,0){A3}
- \pNodeThreeD(8.66,-5,0){A4}
- \pNodeThreeD(0,-10,0){A5}%
- \psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,%
- linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)}
- \DessusTable
- \endpsclip
- \psset{A=5,B=5,C=5}
- \DieThreeD[RotZ=60,RotX=-90](-6.83,-11.83,5)%
- \DieThreeD[RotZ=120,RotY=-90](6.83,-11.83,5)%
- \DieThreeD[RotX=90](-13.86,0,5)%
- \DieThreeD[RotZ=-60,RotY=90](-6.83,11.83,5)%
- \DieThreeD[RotZ=-120,RotY=180](6.83,11.83,5)%
- \DieThreeD[RotZ=180](13.86,0,5)%
-\end{pspicture}
-\end{LTXexample}
-\caption{\label{pentagoneDie}hexagon with dices.}
-\end{figure}
-
-Observing figure from off :
-\begin{verbatim}
-\psset{PHI=90,THETA=0}
-\end{verbatim}
- one obtains classical geometric
-figures :
-
-(\ref{hexagonePlan}) (\ref{dodecagonePlan}) (\ref{pentagonePlan}) (\ref{decagonePlanStar})
-(\ref{trianglePlan}) (\ref{octogonePlan}) (\ref{hexadecagonePlan}) (\ref{hexagonePlanDie}).
-
-\begin{figure}[ht]
-\centering
-\psset{THETA=0,Decran=10,Dobs=125,PHI=90}
-\hexagon
-\caption{\label{hexagonePlan}``flat'' hexagon.}
-\end{figure}
-
-
-\begin{figure}[ht]
-\centering
-\psset{Decran=10,Dobs=100}
-\psset{PHI=90,THETA=0}
-\stardecagon
-\caption{\label{dodecagonePlan}``flat'' star dodecagone.}
-\end{figure}
-%
-\begin{figure}[ht]
-\centering
-\psset{Decran=10,Dobs=125}
-\psset{PHI=90,THETA=0}
-\pentagon
-\caption{\label{pentagonePlan}``flat'' pentagon.}
-\end{figure}
-
-
-\begin{figure}[ht]
-\centering
-\psset{THETA=0,Decran=10,Dobs=125,PHI=90}
-\stardecagon
-\caption{\label{decagonePlanStar}``flat'' star decagon.}
-\end{figure}
-%
-
-
-%
-\begin{figure}[ht]
-\centering
-\psset{PHI=90,THETA=0,Decran=10,Dobs=100}
-\begin{pspicture}*(-2.2,-2.2)(2.2,2.2)
-\Table
-\psset{A=5,B=5,C=5}
-\CubeThreeD(-7.88675,0,5)%1
-\CubeThreeD[RotZ=-120](3.94338,6.83,5)%2
-\CubeThreeD[RotZ=120](3.94338,-6.83,5)%3
-\end{pspicture}
-\caption{\label{trianglePlan}``flat'' triangle.}
-\end{figure}
-
-
-\begin{figure}[ht]
-\centering
-\psset{PHI=90,THETA=0,Decran=10,Dobs=125}
-\octogon
-\caption{\label{octogonePlan}``flat'' octogon.}
-\end{figure}
-
-
-
-\begin{figure}[ht]
-\centering
-\psset{PHI=90,THETA=0,Decran=10,Dobs=125}
-\starhexadecagon
-\caption{\label{hexadecagonePlan}``flat'' star hexadecagon.}
-\end{figure}
-
-\begin{figure}[ht]
-\centering
-\psset{PHI=90,THETA=0,Decran=10,Dobs=125}
-\begin{pspicture}(-2.2,-2.2)(2.2,2.2)
-\Table
-\pNodeThreeD(-8.66,-5,0){A6}
-\pNodeThreeD(-8.66,5,0){A1}
-\pNodeThreeD(0,10,0){A2}
-\pNodeThreeD(8.66,5,0){A3}
-\pNodeThreeD(8.66,-5,0){A4}
-\pNodeThreeD(0,-10,0){A5}%
-\psclip{\pspolygon[fillstyle=solid,fillcolor=GrisClair,linestyle=none](A1)(A2)(A3)(A4)(A5)(A6)}
-\DessusTable
-\endpsclip
-\psset{A=5,B=5,C=5}
-\DieThreeD[RotZ=60,RotX=-90](-6.83,-11.83,5)%
-\DieThreeD[RotZ=120,RotY=-90](6.83,-11.83,5)%
-\DieThreeD[RotX=90](-13.86,0,5)%
-\DieThreeD[RotZ=-60,RotY=90](-6.83,11.83,5)%
-\DieThreeD[RotZ=-120,RotY=180](6.83,11.83,5)%
-\DieThreeD[RotZ=180](13.86,0,5)%
-\end{pspicture}
-\caption{\label{hexagonePlanDie}``flat'' hexagon with dices.}
-\end{figure}
-
-
-
-
-\clearpage
-
-
-\section{Sphere, part of sphere, half-sphere, parallels and meridians}
-
-Beside \verb+sphereThreeD+ there exist several macro for spheres:
-
-\begin{itemize}
-\item \verb|SphereInverseThreeD|
-\item \verb|\SphereCercleThreeD|
-\item \verb|\SphereMeridienThreeD|
-\item \verb|\DemiSphereThreeDThreeD|
-\item \verb|\SphereCreuseThreeD|
-\item \verb|\PortionSphereThreeD|
-\end{itemize}
-
-
-The macro:
-\begin{verbatim}
-\SphereThreeD(10,30,20){20}
-\end{verbatim}
-draws the sphere defined by the coordinates of its centre and its radius which is shown in
-figure~\ref{sphere} together with the macro
-\begin{verbatim}
-\PortionSphereThreeD(0,0,0){20}
-\end{verbatim}
-and some more additional lines.
-
-\begin{verbatim}
-\begin{pspicture}(-3,-3.5)(3,5)
-\psset{THETA=30,PHI=30,Dobs=100,Decran=10}
-{\psset{style=GradGrayWhite}%
-\SphereThreeD(0,0,0){20}
-\psset{fillstyle=solid,fillcolor=gray}
-\PortionSphereThreeD(0,0,0){20}
-\pNodeThreeD(20;10;10){C1}
-\pNodeThreeD(40;10;10){D1}
-\psline(C1)(D1)
-\pNodeThreeD(20;10;-10){C2}
-\pNodeThreeD(40;10;-10){D2}
-\psline(C2)(D2)
-\pNodeThreeD(20;-10;-10){C3}
-\pNodeThreeD(40;-10;-10){D3}
-\psline(C3)(D3)
-\pNodeThreeD(20;-10;10){C4}
-\pNodeThreeD(40;-10;10){D4}
-\psline(C4)(D4)
-\PortionSphereThreeD%
- [style=GradGrayWhite](0,0,0){40}}
-% PhiCercle=latitude of the cercle
-% \SphereCercle[PhiCercle=...]{radius}
-\psset{linecolor=white,PhiCercle=45}
-\SphereCercleThreeD(0,0,0){20}
-% ThetaMeridien=longitude of the meridian
-% \SphereMeridien[ThetaMeridien=...]{radius}
-\SphereMeridienThreeD%
- [ThetaMeridien=45](0,0,0){20}
-\pNodeThreeD(20;45;45){A}
-\pNodeThreeD(50;45;45){B}
-\psline[linecolor=black]{->}(A)(B)
-\pNodeThreeD(20;0;90){Nord}
-\pNodeThreeD(40;0;90){Nord1}
-\psline[linecolor=black]{->}(Nord)(Nord1)
-\SphereCercleThreeD[PhiCercle=0](0,0,0){20}
-\SphereMeridienThreeD%
- [ThetaMeridien=0](0,0,0){20}
-\end{pspicture}
-\end{verbatim}
-
-
-
-\begin{figure}[!htb]
-\begin{pspicture}(-3,-3.5)(3,5)
-\psset{THETA=30,PHI=30,Dobs=100,Decran=10}
-\bgroup
- \psset{style=GradGrayWhite}%
- \SphereThreeD(0,0,0){20}
- \psset{fillstyle=solid,fillcolor=gray}
- \PortionSphereThreeD(0,0,0){20}
- \pNodeThreeD(20;10;10){C1}
- \pNodeThreeD(40;10;10){D1}
- \psline(C1)(D1)
- \pNodeThreeD(20;10;-10){C2}
- \pNodeThreeD(40;10;-10){D2}
- \psline(C2)(D2)
- \pNodeThreeD(20;-10;-10){C3}
- \pNodeThreeD(40;-10;-10){D3}
- \psline(C3)(D3)
- \pNodeThreeD(20;-10;10){C4}
- \pNodeThreeD(40;-10;10){D4}
- \psline(C4)(D4)
- \PortionSphereThreeD[style=GradGrayWhite](0,0,0){40}
-\egroup
-% PhiCercle=latitude of the cercle
-% \SphereCercle[PhiCercle=...]{radius}
- \psset{linecolor=white,PhiCercle=45}
- \SphereCercleThreeD(0,0,0){20}
-% ThetaMeridien=longitude of the meridian
-% \SphereMeridien[ThetaMeridien=...]{radius}
- \SphereMeridienThreeD[ThetaMeridien=45](0,0,0){20}
-% \pNodeThreeD(radius}{longitude}{latitude}{name of the point}
- \pNodeThreeD(20;45;45){A}
- \pNodeThreeD(50;45;45){B}
- \psline[linecolor=black]{->}(A)(B)
- \pNodeThreeD(20;0;90){Nord}
- \pNodeThreeD(40;0;90){Nord1}
- \psline[linecolor=black]{->}(Nord)(Nord1)
- \SphereCercleThreeD[PhiCercle=0](0,0,0){20}
- \SphereMeridienThreeD[ThetaMeridien=0](0,0,0){20}
-\end{pspicture}
-\caption{\label{sphere}A Sphere.}
-\end{figure}
-
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3,-2)(3,5)
- \psset{THETA=60,PHI=30,Dobs=100,Decran=10}
-% \DemiSphereThreeD(x,y,z){radius}
- \DemiSphereThreeD[RotX=180,style=GradGrayWhite](0,0,0){20}
- \SphereCreuseThreeD[RotX=180,linecolor=white,style=GradGrayWhite](0,0,0){20}
- \AxesThreeD[linestyle=dashed](30,30,40)
-\end{pspicture}
-\caption{\label{halfsphere}half-sphere.}
-\end{figure}
-
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3,-2)(3,2)
-\psset{THETA=60,PHI=20,Dobs=100,Decran=10}
-\psset{style=GradGrayWhite}%
-\SphereThreeD(0,0,0){10}%
-\DemiSphereThreeD[RotX=180](0,0,0){20}%
-\begin{psclip}{%
-\SphereCreuseThreeD[RotX=180,linecolor=white](0,0,0){20}}%
-\SphereThreeD(0,0,0){10}
-\end{psclip}%
-\end{pspicture}
-\caption{\label{egg} levitation}
-\end{figure}
-
-
-\section{A Hole in a sphere}
-
-\begin{figure}[!htb]
-\centering
-\psset{THETA=10,PHI=30,Dobs=100,Decran=10}
-\begin{pspicture}*(-3,-3)(3,3)
- \SphereThreeD[style=GradGrayWhite,gradmidpoint=0.2](0,0,0){40}%
- \begin{psclip}{\PortionSphereThreeD[PortionSpherePHI=40,%
- DeltaPHI=30,DeltaTHETA=30,linewidth=4\pslinewidth](0,0,0){40}}%
- \SphereInverseThreeD[style=GradGrayWhite](0,0,0){40}%
- \SphereThreeD[style=GradGrayWhite](0,0,0){30}%
- \begin{psclip}{\PortionSphereThreeD[PortionSpherePHI=30,%
- DeltaPHI=30,DeltaTHETA=30,linewidth=4\pslinewidth](0,0,0){30}}%
- \SphereInverseThreeD[style=GradGrayWhite](0,0,0){30}%
- \SphereThreeD[style=GradGrayWhite](0,0,0){20}%
- \begin{psclip}{\PortionSphereThreeD[PortionSpherePHI=30,%
- DeltaPHI=30,DeltaTHETA=30,linewidth=4\pslinewidth](0,0,0){20}}%
- \SphereInverseThreeD[style=GradGrayWhite](0,0,0){20}%
- \SphereThreeD[style=GradGrayWhite](0,0,0){10}%
- \begin{psclip}{%
- \PortionSphereThreeD[PortionSpherePHI=30,%
- DeltaPHI=30,DeltaTHETA=30,linewidth=4\pslinewidth](0,0,0){10}}%
- \SphereInverseThreeD[style=GradGrayWhite](0,0,0){10}%
- \SphereThreeD[style=GradGrayWhite](0,0,0){5}%
- \end{psclip}%
- \end{psclip}%
- \end{psclip}%
- \end{psclip}%
-\end{pspicture}
-\caption{\label{Holeinasphere}A Hole in a sphere.}
-\end{figure}
-
-It is a rectangular hole whose the size are meridian and parallels
-arcs (figure~\ref{Holeinasphere}).
-
-We define the part of the sphere setting its radius, the center
-of the sphere and the $\Delta\phi$ and $\Delta\theta$.
-\begin{verbatim}
-\PortionSphereThreeD[PortionSpherePHI=45,%
- PortionSphereTHETA=0,%
- DeltaPHI=45,%
- DeltaTHETA=20](0,0,0){20}
-\end{verbatim}
-
-There are the parameters of the first hole. The radius is
-\texttt{20}.
-\begin{verbatim}
-{\psset{fillstyle=gradient,%
- gradbegin=white,%
- gradend=blue,%
- gradmidpoint=0.2,%
- linecolor=cyan,%
- linewidth=0.1mm}
-\SphereThreeD(0,0,0){20}}%
-\begin{psclip}{%
-\PortionSphereThreeD[PortionSpherePHI=45,%
- DeltaPHI=45,DeltaTHETA=20](0,0,0){20}}
-\SphereInverseThreeD[fillstyle=solid,%
- fillcolor=red,%
- linecolor=blue](0,0,0){20}%
-\end{psclip}%
-\end{verbatim}
-
-This is the tricks to see the inner of the sphere.
-
-\verb+\SphereInverse+ define the hidden part of the sphere.
-
-
-\section{Drawing a cylinder}
-A cylinder is defined by the radius of its base and its height.
-The center of the base is set in the usual way, and
-\textsf{RotX,RotY,RotZ} make it rotate around the axes.
-
-\verb+\CylindreThreeD(x,y,z){radius}{hauteur}+
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3.5,-2)(3,4.5)
-\psset{THETA=5,PHI=40,Dobs=150,Decran=6.5,fillstyle=solid,linewidth=0.1mm}
-% plan horizontal
-{\psset{normaleLongitude=0, normaleLatitude=90}
-\FrameThreeD[fillstyle=solid,fillcolor=GrisClair](0,0,0)(-50,0)(50,50)
-\FrameThreeD[fillstyle=solid,fillcolor=GrisClair](0,0,0)(-50,0)(50,-50)
-\QuadrillageThreeD(0,0,0)(-50,-50)(50,50)}
-\multido{\iCY=-45+90}{2}{%
- \CylindreThreeD(-45,\iCY,0){5}{50}
- \DemiSphereThreeD(-45,\iCY,50){5}%
-}
-\CylindreThreeD(0,0,0){10}{15}
-\CylindreThreeD(0,0,15){20}{5}
-\DemiSphereThreeD[RotX=180](0,0,35){20}
-\SphereCreuseThreeD[RotX=180](0,0,35){20}
-{\psset{RotY=90,RotX=0,RotZ=30}
-\CylindreThreeD(15,15,5){5}{20}}
-\multido{\iCY=-45+90}{2}{%
-\CylindreThreeD(45,\iCY,0){5}{50}
-\DemiSphereThreeD(45,\iCY,50){5}}
-\end{pspicture}
-\caption{\label{cylinder}cylinders.}
-\end{figure}
-
-\begin{verbatim}
-\CylindreThreeD(0,0,-5){10}{15}}
-\psset{RotY=90}
-\CylindreThreeD(15,15,-5){5}{20}
-\end{verbatim}
-
-
-\section{Tetrahedron, cone and square pyramid}
-\subsection{square pyramid}
-\begin{verbatim}
-\psset{A=...,Hpyramide=...}
-\Pyramide
-\end{verbatim}
-
-See the examples of figures~(\ref{Pyramid})~(\ref{Obelisque}).
-
-\begin{figure}[!htb]
-\centering
-\psset{ColorFaceD=GrayD,ColorFaceA=GrayA,%
- ColorFaceB=GrayB,ColorFaceC=GrayC,ColorFaceE=GrayE}
-\psframebox[fillstyle=solid,fillcolor=GrayB,framesep=0pt]{%
-\begin{pspicture}*(-3,-4)(3,4)
-\psset{THETA=-70,PHI=60,Dobs=200,Decran=15}
-\DecorSable
-\psset{RotZ=45,fillstyle=solid,linecolor=black,A=9}
-\PyramideThreeD(5,35,0){10}
-\psset{A=10}
-\PyramideThreeD(0,0,0){13}
-\psset{A=7}
-\PyramideThreeD(10,-35,0){8.7}
-\end{pspicture}}
-\caption{\label{Pyramid}Pyramids of Egypt.}
-\end{figure}
-
-
-\begin{figure}[!htb]
-\centering
-\psframebox[fillstyle=solid,fillcolor=GrayB,framesep=0pt]{%
- \begin{pspicture}*(-2.5,-2)(2.5,5.5)
- \psset{THETA=30,PHI=30,Dobs=400,Decran=12}
- \DecorSable
- \CubeThreeD[A=15,B=15,C=15](0,0,15)%
- \psset{A=10,fillstyle=solid}
- \PyramideThreeD[fracHeight=0.8](0,0,30){150}%
- \psset{A=2}
- \PyramideThreeD(0,0,150){5}%
- \end{pspicture}%
-}
-\caption{\label{Obelisque}Obelisk of Egypt.}
-\end{figure}
-
-
-\subsection{Cone}
-\begin{verbatim}
-\ConeThreeD[fracHeight=...]
- (x,y,z){radius}{Height}
-\end{verbatim}
-by default \verb+fracHeight=1+ : figure~\ref{Cone}.
-
-\begin{figure}[!htb]
-\centering
-\psframebox[fillstyle=solid,fillcolor=GrayB,framesep=0pt]{%
-\begin{pspicture}*(-3,-5)(3,4)
-\psset{THETA=30,PHI=40,Dobs=200,Decran=12,fillstyle=solid,%
- fillcolor=GrisClair,linewidth=0.25\pslinewidth}
-\DecorSable
-\CylindreThreeD(0,0,0){10}{50}
-\ConeThreeD[fillcolor=GrayB](0,0,50){10}{10}
-\CylindreThreeD[RotY=90,RotZ=150](40,20,10){10}{50}
-\ConeThreeD[fracHeight=0.5](20,-20,0){10}{10}
-\CylindreThreeD(20,-20,5){5}{50}
-\ConeThreeD[fracHeight=0.5](50,50,0){10}{10}
-\CylindreThreeD(50,50,5){5}{50}
-\end{pspicture}}
-\caption{\label{Cone}Cones and cylinders.}
-\end{figure}
-
-\section{Points and lines}
-The command allowing to mark points and thus to draw lines
-and polygons can be used of two manners, either with the Cartesian coordinates
- \begin{verbatim}
-\pNodeThreeD(x,y,z){name}
-\end{verbatim}
- or with the spherical coordinates :
-\begin{verbatim}
-\pNodeThreeD(radius;longitude;latitude)%
- {name of the point}
-\end{verbatim}
-
-For example \verb+\pNodeThreeD(25,-25,25){A}+, the point $A(25,25,25)$ places.
-Points being positioned, just to write \verb+\psline(A)(B)+, to draw the segment $AB$.
-
- On the figure~\ref {points}, one drew a cube with its diagonals.
-\begin{figure}[!htb]
-\centering
-\psset{unit=1cm}
- \psset{THETA=70,PHI=30,Dobs=150,Decran=10}
- \begin{pspicture}(-3,-3)(3,4)
- \AxesThreeD[linecolor=red,linestyle=dashed](50,60,50)
- \pNodeThreeD(25,-25,25){A}
- \pNodeThreeD(25,25,25){B}
- \pNodeThreeD(25,25,-25){C}
- \pNodeThreeD(25,-25,-25){D}
- \pNodeThreeD(-25,-25,25){E}
- \pNodeThreeD(-25,25,25){F}
- \pNodeThreeD(-25,25,-25){G}
- \pNodeThreeD(-25,-25,-25){H}
- \pspolygon(A)(B)(C)(D)
- \pspolygon(E)(F)(G)(H)
- \psline(A)(E)
- \psline(B)(F)
- \psline(C)(G)
- \psline(D)(H)
- \psset{linestyle=dashed}
- \psline(A)(G)
- \psline(B)(H)
- \psline(C)(E)
- \psline(D)(F)
-% routine page 49 in "présentation de PSTricks"
-% D.Girou "cahier 16 Gutengerg"
- \newcounter{lettre}
- \multido{\i=1+1}{8}{%
- \setcounter{lettre}{\i}
- \psdot[linecolor=red](\Alph{lettre})
- \uput[90](\Alph{lettre}){\Alph{lettre}}
- }
-\end{pspicture}
-\caption{\label{points}Points and lines.}
-\end{figure}
-
-
-\section{Circles}
-A circle is defined by a vector normal for its plan by $(\theta,\varphi)$, with the following parameters for example:
-\begin{verbatim}
-normaleLongitude=60,normaleLatitude=90
-\end{verbatim}
-The coordinates of his centre as well as his radius.
-\begin{verbatim}
-\CircleThreeD(x,y,z){radius}
-\end{verbatim}
-
-The circles of the figure~\ref{circles}, were drawn with the following
-commands:
-
-\begin{figure}[!htb]
-\centering
-\psframebox{%
- \begin{pspicture}(-2.5,-3.5)(3.5,1.5)
- \psset{THETA=50,PHI=50,Dobs=250,Decran=10}
- \multido{\iX=-70+10}{15}{%
- \pNodeThreeD(\iX,0,0){X1}
- \pNodeThreeD(\iX,50,0){X2}
- \psline(X1)(X2)
- }
- \multido{\iY=0+10}{6}{%
- \pNodeThreeD(-70,\iY,0){Y1}
- \pNodeThreeD(70,\iY,0){Y2}
- \psline(Y1)(Y2)%
- }
- \psset{normaleLongitude=0,normaleLatitude=90}
- \multido{\iXorigine=-65+10}{14}{%
- \multido{\iYorigine=5+10}{5}{%
- \CircleThreeD[linecolor=red](\iXorigine,\iYorigine,0){5}%
- }%
- }
- \end{pspicture}%
-}
-\caption{\label{circles}circles.}
-\end{figure}
-
-\begin{verbatim}
-\psset{normaleLongitude=0,%
- normaleLatitude=90}
-\multido{\iXorigine=-65+10}{14}{%
- \multido{\iYorigine=5+10}{5}{%
- \CircleThreeD[linecolor=red]%
- (\iXorigine,\iYorigine,0){5}}}
-\end{verbatim}
-
-\section{The macros and the options}
-\subsection{The colors of the cube, the pyramid and tetraedre}
-
-The predefined colors for the different sides of a cube are
-always set in the \verb+rgb+ mode :
-\begin{verbatim}
-CubeColorFaceOne=1 1 0,%
-CubeColorFaceTwo=0.9 0.9 0,%
-CubeColorFaceThree=0.8 0.8 0,%
-CubeColorFaceFour=0.7 0.7 0,%
-CubeColorFaceFive=0.65 0.65 0,%
-CubeColorFaceSix=0.75 0.75 0
-\end{verbatim}
-
-The colors for the pyramid and the tetraedre are taken from the predefined ones:
-\begin{verbatim}
-ColorFaceD=cyan,
-ColorFaceA=magenta,
-ColorFaceB=red,
-ColorFaceC=blue,
-ColorFaceE=yellow
-\end{verbatim}
-
-They can be changed in the usual way with the \verb+\psset+ macro.
-
-
-\subsection{Common parameters}
-\verb+RotX=<value>, RotY=<value>, RotZ=<value>+
-
-The predefined value is zero, means no rotation.
-
-\subsection{Cube}
-The following command places a parallelepiped with a length of $a=40$, $b=20$ and $c=10$ units
-and it is placed with its center at the point $x=25$, $y=25$ and $z=25$
-
-\begin{verbatim}
-\CubeThreeD[A=20,B=10,C=5](25,25,25)
-\end{verbatim}
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3,-3)(3,3.5)
-\psset{PHI=30,THETA=45,Dobs=200}
-\PlansOXYZ\AxesThreeD(55)
-\FrameThreeD[normaleLongitude=0,%
- normaleLatitude=90,%
- fillstyle=vlines,hatchsep=0.4mm](25,25,0)(-10,-15)(10,15)
-\FrameThreeD[normaleLongitude=0,%
- normaleLatitude=0,%
- fillstyle=vlines,hatchsep=0.4mm](0,25,25)(-10,-5)(10,5)
-\FrameThreeD[normaleLongitude=90,%
- normaleLatitude=0,%
- fillstyle=vlines,hatchsep=0.4mm](25,0,25)(-15,-5)(15,5)
-\CubeThreeD[A=15,B=10,C=5](25,25,25)%
-\end{pspicture}
-\caption{\label{Prisme}Parallelepiped}
-\end{figure}
-
-In other words: the length of the sides is \verb+2A,2B,2C+ (see figure~\ref{Prisme}).
-
-For rotations, let us consider the result of a rotation around one of the axes, while knowing that it is possible to combine them. The corresponding rotation of projection on the horizontal level is obtained with the parameter: \verb+normaleLongitude=<degrees>+ (figure~\ref{PrismeRotZ}).
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3,-3)(3,3.5)
-\psset{PHI=30,THETA=45,Dobs=200,RotZ=60}
-\PlansOXYZ\AxesThreeD(55)
-% la projection sur le plan Oxy
-\FrameThreeD[normaleLongitude=60,%
- normaleLatitude=90,%
- fillstyle=vlines,hatchsep=0.4mm](25,25,0)(-10,-15)(10,15)
-\CubeThreeD[A=15,B=10,C=5](25,25,25)%
-\end{pspicture}
-\caption{\label{PrismeRotZ}The same parallelepiped rotated with \texttt{RotZ=60}.}
-\end{figure}
-
-There is no difference to a die, except that all sides have the same length.
-
-
-\begin{figure}[!htb]
-\centering
-\begin{pspicture}(-3,-3)(3,3.5)
-\psset{PHI=30,THETA=45,Dobs=200,RotZ=60,,RotX=90}
-\PlansOXYZ\AxesThreeD(55)
-% la projection sur le plan Oxy
-\FrameThreeD[normaleLongitude=60,%
- normaleLatitude=90,%
- fillstyle=vlines,hatchsep=0.4mm](25,25,0)(-5,-15)(5,15)
-\CubeThreeD[A=15,B=10,C=5](25,25,25)%
-\end{pspicture}
-\caption{\label{PrismeRotXRotZ}The same parallelepiped, rotated with the values \texttt{RotX=90,RotZ=60}}
-\end{figure}
-
-
-\subsection{Cylinder and circle}
-In addition to the already quoted optional parameters the cylinder requires the obligatory parameters:
-\begin{verbatim}
-\CylindreThreeD[...](x,y,z){radius}{height}
-\end{verbatim}
-
-Projection on the horizontal level is obtained with the following values:
-
-\begin{verbatim}
-\CircleThreeD[normaleLongitude=0,%
- normaleLatitude=90,%
- fillstyle=vlines,%
- hatchsep=0.4mm](30,30,0){10}
-\end{verbatim}
-
-The circle macro needs the following parameters:
-
-\begin{verbatim}
-\CircleThreeD[...](x,y,z){radius}
-\end{verbatim}
-
-Figure~\ref{CylindreDemo} shows an example of the above macros.
-
-\begin{figure}[!ht]
-\centering
-\begin{pspicture}(-3,-3)(3,3.5)
-\psset{PHI=30,THETA=45,Dobs=200}
-\PlansOXYZ\AxesThreeD(55)
-% la projection sur le plan Oxy
-\CircleThreeD[normaleLongitude=0,%
- normaleLatitude=90,%
- fillstyle=vlines,%
- hatchsep=0.4mm](30,30,0){10}
-\CylindreThreeD[fillstyle=solid,fillcolor=yellow,%
- linewidth=0.1mm](30,30,20){10}{30}%
-\end{pspicture}
-\caption{\label{CylindreDemo}A cylinder with a radius of $10$ units and a
- height of $50$ units
- with its base center at \texttt{(30,30,20)}.%
-}
-\end{figure}
-
-
-\section{See the interior of a cube}
-The following option makes it possible to visualize the interior of the box, the result is seen in the figure~\ref{Cube inside} :
-
-\begin{verbatim}
-\DieThreeD(0,0,0)%
-\begin{psclip}{%
-\FrameThreeD[normaleLongitude=0,%
- normaleLatitude=90]%
- (0,0,10)(-10,-10)(10,10)}%
-\DieThreeD[CubeInside=true](0,0,0)%
-\end{psclip}%
-\end{verbatim}
-
-\begin{figure}
-\centering
-\begin{pspicture}(-2,-2)(2,3.5)
- \psset{A=10,B=10,C=10,PHI=60,THETA=-60}
- \DieThreeD(0,0,0)%
- \begin{psclip}{%
- \FrameThreeD[normaleLongitude=0,%
- normaleLatitude=90](0,0,10)(-10,-10)(10,10)}%
- \DieThreeD[CubeInside=true](0,0,0)%
- \end{psclip}%
- \FrameThreeD[normaleLongitude=0,%
- normaleLatitude=90,linewidth=1mm](0,0,10)(-10,-10)(10,10)%
-\end{pspicture}
-\caption{\label{Cube inside}An empty box.}
-\end{figure}
-
-
-\nocite{*}
-
-\bibliographystyle{plain}
-\bibliography{pst-vue3d-doc}
-
-\end{document}
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.pro b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.pro
deleted file mode 100644
index b6e8d1289a..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.pro
+++ /dev/null
@@ -1,2092 +0,0 @@
-%version 33 march 2007
-%
-/tx@3DDict 100 dict def
-tx@3DDict begin
-/Cube{%
- /XA M11 A mul M12 B mul add M13 C mul add CX add def
- /YA M21 A mul M22 B mul add M23 C mul add CY add def
- /ZA M31 A mul M32 B mul add M33 C mul add CZ add def
- /XB M11 A mul neg M12 B mul add M13 C mul add CX add def
- /YB M21 A mul neg M22 B mul add M23 C mul add CY add def
- /ZB M31 A mul neg M32 B mul add M33 C mul add CZ add def
- /XC M11 A mul neg M12 B mul neg add M13 C mul add CX add def
- /YC M21 A mul neg M22 B mul neg add M23 C mul add CY add def
- /ZC M31 A mul neg M32 B mul neg add M33 C mul add CZ add def
- /XD M11 A mul M12 B mul neg add M13 C mul add CX add def
- /YD M21 A mul M22 B mul neg add M23 C mul add CY add def
- /ZD M31 A mul M32 B mul neg add M33 C mul add CZ add def
- /XE M11 A mul M12 B mul add M13 C mul sub CX add def
- /YE M21 A mul M22 B mul add M23 C mul sub CY add def
- /ZE M31 A mul M32 B mul add M33 C mul sub CZ add def
- /XF M11 A mul neg M12 B mul add M13 C mul sub CX add def
- /YF M21 A mul neg M22 B mul add M23 C mul sub CY add def
- /ZF M31 A mul neg M32 B mul add M33 C mul sub CZ add def
- /XG M11 A mul neg M12 B mul sub M13 C mul sub CX add def
- /YG M21 A mul neg M22 B mul sub M23 C mul sub CY add def
- /ZG M31 A mul neg M32 B mul sub M33 C mul sub CZ add def
- /XH M11 A mul M12 B mul sub M13 C mul sub CX add def
- /YH M21 A mul M22 B mul sub M23 C mul sub CY add def
- /ZH M31 A mul M32 B mul sub M33 C mul sub CZ add def
-% Centres des faces : condition de visibilité
-% FACE 1
-% OC1
- /XC1 M13 C mul CX add def
- /YC1 M23 C mul CY add def
- /ZC1 M33 C mul CZ add def
-% Normale à la face 1
- /NX1 M13 C mul def
- /NY1 M23 C mul def
- /NZ1 M33 C mul def
-% rayon vers point de vue
- /RXvue1 XC1 XpointVue sub def
- /RYvue1 YC1 YpointVue sub def
- /RZvue1 ZC1 ZpointVue sub def
-% produit scalaire
- /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def
-% FACE 2
-% OC2
- /XC2 M11 A mul CX add def
- /YC2 M21 A mul CY add def
- /ZC2 M31 A mul CZ add def
-% normale à la face 2
- /NX2 M11 A mul def
- /NY2 M21 A mul def
- /NZ2 M31 A mul def
-% rayon vers point de vue
- /RXvue2 XC2 XpointVue sub def
- /RYvue2 YC2 YpointVue sub def
- /RZvue2 ZC2 ZpointVue sub def
-% produit scalaire
- /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def
-% FACE 3
-% OC3
- /XC3 M13 C neg mul CX add def
- /YC3 M23 C neg mul CY add def
- /ZC3 M33 C neg mul CZ add def
-% normale à la face 3
- /NX3 M13 C neg mul def
- /NY3 M23 C neg mul def
- /NZ3 M33 C neg mul def
-% rayon vers point de vue
- /RXvue3 XC3 XpointVue sub def
- /RYvue3 YC3 YpointVue sub def
- /RZvue3 ZC3 ZpointVue sub def
-% produit scalaire
- /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def
-% FACE 4
-% OC4
- /XC4 M11 A neg mul CX add def
- /YC4 M21 A neg mul CY add def
- /ZC4 M31 A neg mul CZ add def
-% normale à la face 4
- /NX4 M11 A neg mul def
- /NY4 M21 A neg mul def
- /NZ4 M31 A neg mul def
-% rayon vers point de vue
- /RXvue4 XC4 XpointVue sub def
- /RYvue4 YC4 YpointVue sub def
- /RZvue4 ZC4 ZpointVue sub def
-% produit scalaire
- /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def
-% FACE 5
-% OC5
- /XC5 M12 B neg mul CX add def
- /YC5 M22 B neg mul CY add def
- /ZC5 M32 B neg mul CZ add def
-% normale à la face 5
- /NX5 M12 B neg mul def
- /NY5 M22 B neg mul def
- /NZ5 M32 B neg mul def
-% rayon vers point de vue
- /RXvue5 XC5 XpointVue sub def
- /RYvue5 YC5 YpointVue sub def
- /RZvue5 ZC5 ZpointVue sub def
-% produit scalaire
- /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def
-% FACE 6
-% OC6
- /XC6 M12 B mul CX add def
- /YC6 M22 B mul CY add def
- /ZC6 M32 B mul CZ add def
-% normale à la face 6
- /NX6 M12 B mul def
- /NY6 M22 B mul def
- /NZ6 M32 B mul def
-% rayon vers point de vue
- /RXvue6 XC6 XpointVue sub def
- /RYvue6 YC6 YpointVue sub def
- /RZvue6 ZC6 ZpointVue sub def
-% produit scalaire
- /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def
-% faceOne
-PS1 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YA def
- /Zcote ZA def
- /Xabscisse XA def
- CalcCoordinates
- moveto
- /Zcote ZB def
- /Xabscisse XB def
- /Yordonnee YB def
- CalcCoordinates
- lineto
- /Zcote ZC def
- /Xabscisse XC def
- /Yordonnee YC def
- CalcCoordinates
- lineto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
- /Zcote ZA def
- /Xabscisse XA def
- /Yordonnee YA def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceOne setrgbcolor
-fill
-grestore
-stroke
-} if
-% faceTwo
-PS2 0 Condition{ %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- moveto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
- /Zcote ZE def
- /Xabscisse XE def
- /Yordonnee YE def
- CalcCoordinates
- lineto
- /Zcote ZA def
- /Xabscisse XA def
- /Yordonnee YA def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceTwo setrgbcolor
-fill
-grestore
-stroke
-} if
-% face three
-PS3 0 Condition{ %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Xabscisse XE def
- /Yordonnee YE def
- /Zcote ZE def
- CalcCoordinates
- moveto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
- /Zcote ZE def
- /Xabscisse XE def
- /Yordonnee YE def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceThree setrgbcolor
-fill
-grestore
-stroke
-} if
-% face four
-PS4 0 Condition{ %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- moveto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
- /Zcote ZC def
- /Xabscisse XC def
- /Yordonnee YC def
- CalcCoordinates
- lineto
- /Zcote ZB def
- /Xabscisse XB def
- /Yordonnee YB def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceFour setrgbcolor
-fill
-grestore
-stroke
-} if
-% face five
-PS5 0 Condition{ %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- moveto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
- /Zcote ZC def
- /Xabscisse XC def
- /Yordonnee YC def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceFive setrgbcolor
-fill
-grestore
-stroke
-} if
-% face six
-PS6 0 Condition{ %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- moveto
- /Zcote ZA def
- /Xabscisse XA def
- /Yordonnee YA def
- CalcCoordinates
- lineto
- /Zcote ZE def
- /Xabscisse XE def
- /Yordonnee YE def
- CalcCoordinates
- lineto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
- /Zcote ZB def
- /Xabscisse XB def
- /Yordonnee YB def
- CalcCoordinates
- lineto
-closepath
-gsave
-CubeColorFaceSix setrgbcolor
-fill
-grestore
-stroke
-} if
-}
-def
-%
-/PointsDie{%
-PS6 0 Condition{ %
-reduction reduction scale
-A 2 div neg A A 2 div {
- /XCpoint exch def
-C 2 div neg C C 2 div {
- /ZCpoint exch def
-newpath
- /Zpoint Rpoint ZCpoint add def
- /Xpoint XCpoint def
- /Ypoint B def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Zpoint Rpoint Angle cos mul ZCpoint add def
- /Xpoint Rpoint Angle sin mul XCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
- } for
- } for
- } if
-PS5 0 Condition{ %
-reduction reduction scale
-newpath
- /Ypoint B neg def
- /XCpoint A 2 div neg def
- /ZCpoint C 2 div def
- /Xpoint Rpoint XCpoint add def
- /Zpoint ZCpoint def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint Rpoint Angle cos mul XCpoint add def
- /Zpoint Rpoint Angle sin mul ZCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-%
-newpath
- /XCpoint A 2 div def
- /ZCpoint C 2 div neg def
- /Xpoint Rpoint XCpoint add def
- /Zpoint ZCpoint def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint Rpoint Angle cos mul XCpoint add def
- /Zpoint Rpoint Angle sin mul ZCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-%
-newpath
- /XCpoint 0 def
- /ZCpoint 0 def
- /Xpoint Rpoint XCpoint add def
- /Zpoint ZCpoint def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint Rpoint Angle cos mul XCpoint add def
- /Zpoint Rpoint Angle sin mul ZCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-} if
-PS4 0 Condition{ %
-reduction reduction scale
-C 2 div neg C C 2 div {
- /ZCpoint exch def
-B 2 div neg B B 2 div {
- /YCpoint exch def
-newpath
- /Zpoint Rpoint ZCpoint add def
- /Ypoint YCpoint def
- /Xpoint A neg def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Zpoint Rpoint Angle cos mul ZCpoint add def
- /Ypoint Rpoint Angle sin mul YCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
- } for
- } for
-% le point du milieu
-newpath
- /Zpoint Rpoint def
- /Ypoint 0 def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Zpoint Rpoint Angle cos mul def
- /Ypoint Rpoint Angle sin mul def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-} if
-PS3 0 Condition{ %
-reduction reduction scale
-A 2 div neg A A 2 div {
- /XCpoint exch def
-B 2 div neg B 2 div B 2 div {
- /YCpoint exch def
-newpath
- /Xpoint Rpoint XCpoint add def
- /Ypoint YCpoint def
- /Zpoint C neg def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint Rpoint Angle cos mul XCpoint add def
- /Ypoint Rpoint Angle sin mul YCpoint add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
- } for
- } for
-} if
-PS2 0 Condition{ %
-reduction reduction scale
-newpath
- /Xpoint A def
- /Ypoint Rpoint B 2 div add def
- /Zpoint C 2 div neg def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Ypoint Rpoint Angle cos mul B 2 div add def
- /Zpoint Rpoint Angle sin mul C 2 div sub def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-newpath
- /Xpoint A def
- /Ypoint Rpoint B 2 div sub def
- /Zpoint C 2 div def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint A def
- /Ypoint Rpoint Angle cos mul B 2 div sub def
- /Zpoint Rpoint Angle sin mul A 2 div add def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-} if
-PS1 0 Condition{ %
-reduction reduction scale
-newpath
- /Xpoint Rpoint def
- /Ypoint 0 def
- /Zpoint C def
-CalculsPointsAfterTransformations
-CalcCoordinates
- moveto
-0 1 359 {%
- /Angle exch def
- /Xpoint Rpoint Angle cos mul def
- /Ypoint Rpoint Angle sin mul def
-CalculsPointsAfterTransformations
-CalcCoordinates
- lineto
- } for
-closepath
-0 setgray
-fill
-} if
-} def
-%
-/CalcCoordinates{%
- formulesTroisD
-% hv 2005-04-30 --->beg
-% Xi 28.45 mul Yi 28.45 mul
- Xi xUnit mul Yi yUnit mul
-% hv 2005-04-30 <---beg
- }
- def
-% pour la 3D conventionnelle
-/formulesTroisD{%
- /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def
- /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def
- /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def
- /Xi DScreen xObservateur mul zObservateur div def
- /Yi DScreen yObservateur mul zObservateur div def
- }
-def
-%
-/CalculsPointsAfterTransformations{%
- /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add def
- /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add def
- /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add def
- }
-def
-%
-/SommetsTetraedre{%
- /xA RayonBaseTetraedre neg def
- /yA 0 def
- /zA 0 def
- /xB 0.5 RayonBaseTetraedre mul def
- /yB RayonBaseTetraedre 0.866 mul neg def
- /zB 0 def
- /xC xB def
- /yC yB neg def
- /zC 0 def
- /xD 0 def
- /yD 0 def
- /zD RayonBaseTetraedre 1.414 mul def
-% coordonnées centre des faces
- /xFaceA xA xB xC add add 3 div def
- /yFaceA yA yB yC add add 3 div def
- /zFaceA zA zB zC add add 3 div def
- /xFaceB xD xA xB add add 3 div def
- /yFaceB yD yA yB add add 3 div def
- /zFaceB zD zA zB add add 3 div def
- /xFaceC xA xD xC add add 3 div def
- /yFaceC yA yD yC add add 3 div def
- /zFaceC zA zD zC add add 3 div def
- /xFaceD xD xB xC add add 3 div def
- /yFaceD yD yB yC add add 3 div def
- /zFaceD zD zB zC add add 3 div def
-% sommets après rotation et translation
- /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def
- /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def
- /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def
- /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def
- /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def
- /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def
- /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def
- /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def
- /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def
- /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def
- /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def
- /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def
-% centres de faces après transformations
- /XFaceA M11 xFaceA mul M12 yFaceA mul add M13 zFaceA mul add CX add def
- /YFaceA M21 xFaceA mul M22 yFaceA mul add M23 zFaceA mul add CY add def
- /ZFaceA M31 xFaceA mul M32 yFaceA mul add M33 zFaceA mul add CZ add def
- /XFaceB M11 xFaceB mul M12 yFaceB mul add M13 zFaceB mul add CX add def
- /YFaceB M21 xFaceB mul M22 yFaceB mul add M23 zFaceB mul add CY add def
- /ZFaceB M31 xFaceB mul M32 yFaceB mul add M33 zFaceB mul add CZ add def
- /XFaceC M11 xFaceC mul M12 yFaceC mul add M13 zFaceC mul add CX add def
- /YFaceC M21 xFaceC mul M22 yFaceC mul add M23 zFaceC mul add CY add def
- /ZFaceC M31 xFaceC mul M32 yFaceC mul add M33 zFaceC mul add CZ add def
- /XFaceD M11 xFaceD mul M12 yFaceD mul add M13 zFaceD mul add CX add def
- /YFaceD M21 xFaceD mul M22 yFaceD mul add M23 zFaceD mul add CY add def
- /ZFaceD M31 xFaceD mul M32 yFaceD mul add M33 zFaceD mul add CZ add def
-% Normales aux faces
- /NxA XFaceA XD sub def
- /NyA YFaceA YD sub def
- /NzA ZFaceA ZD sub def
- /NxB XFaceB XC sub def
- /NyB YFaceB YC sub def
- /NzB ZFaceB ZC sub def
- /NxC XFaceC XB sub def
- /NyC YFaceC YB sub def
- /NzC ZFaceC ZB sub def
- /NxD XFaceD XA sub def
- /NyD YFaceD YA sub def
- /NzD ZFaceD ZA sub def
-% Conditions de visibilité
-% rayon vers point de vue
- /RXvueA XFaceA XpointVue sub def
- /RYvueA YFaceA YpointVue sub def
- /RZvueA ZFaceA ZpointVue sub def
- /RXvueB XFaceB XpointVue sub def
- /RYvueB YFaceB YpointVue sub def
- /RZvueB ZFaceB ZpointVue sub def
- /RXvueC XFaceC XpointVue sub def
- /RYvueC YFaceC YpointVue sub def
- /RZvueC ZFaceC ZpointVue sub def
- /RXvueD XFaceD XpointVue sub def
- /RYvueD YFaceD YpointVue sub def
- /RZvueD ZFaceD ZpointVue sub def
-% produit scalaire
- /PSA RXvueA NxA mul RYvueA NyA mul add RZvueA NzA mul add def
- /PSB RXvueB NxB mul RYvueB NyB mul add RZvueB NzB mul add def
- /PSC RXvueC NxC mul RYvueC NyC mul add RZvueC NzC mul add def
- /PSD RXvueD NxD mul RYvueD NyD mul add RZvueD NzD mul add def
- }
- def
-/Tetraedre{%
-SommetsTetraedre
-% face ABC
- PSA 0 le { %
-reduction reduction scale
-1 setlinejoin
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- moveto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- lineto
-} if
-% face DAB
- PSB 0 le { %
-reduction reduction scale
-1 setlinejoin
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- moveto
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- lineto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
-} if
-% face DAC
-PSC 0 le { %
-reduction reduction scale
-1 setlinejoin
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- moveto
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- lineto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
-} if
-% face DBC
- PSD 0 le { %
-reduction reduction scale
-1 setlinejoin
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- moveto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
-} if
-}
-def
-%
-/SommetsPyramide{%
- /xA A def
- /yA A neg def
- /zA 0 def
- /xB A def
- /yB A def
- /zB 0 def
- /xC A neg def
- /yC A def
- /zC 0 def
- /xD A neg def
- /yD A neg def
- /zD 0 def
- /xS 0 def
- /yS 0 def
- /zS Hpyramide def
-% coordonnées centre des faces
- /Alpha A Hpyramide atan def
- /xFaceSAB Hpyramide Alpha dup sin exch cos mul mul def
- /yFaceSAB 0 def
- /zFaceSAB Hpyramide Alpha sin dup mul mul def
- /xFaceSBC 0 def
- /yFaceSBC xFaceSAB def
- /zFaceSBC zFaceSAB fracHeight mul def
- /xFaceSCD xFaceSAB neg def
- /yFaceSCD 0 def
- /zFaceSCD zFaceSAB fracHeight mul def
- /xFaceSDA 0 def
- /yFaceSDA xFaceSAB neg def
- /zFaceSDA zFaceSAB fracHeight mul def
-% sommets après rotation et translation
- /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def
- /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def
- /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def
- /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def
- /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def
- /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def
- /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def
- /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def
- /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def
- /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def
- /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def
- /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def
- /XS M11 xS mul M12 yS mul add M13 zS mul add CX add def
- /YS M21 xS mul M22 yS mul add M23 zS mul add CY add def
- /ZS M31 xS mul M32 yS mul add M33 zS mul add CZ add def
-% centres de faces après transformations
- /XFaceSAB M11 xFaceSAB mul M12 yFaceSAB mul add M13 zFaceSAB mul add CX add def
- /YFaceSAB M21 xFaceSAB mul M22 yFaceSAB mul add M23 zFaceSAB mul add CY add def
- /ZFaceSAB M31 xFaceSAB mul M32 yFaceSAB mul add M33 zFaceSAB mul add CZ add def
- /XFaceSBC M11 xFaceSBC mul M12 yFaceSBC mul add M13 zFaceSBC mul add CX add def
- /YFaceSBC M21 xFaceSBC mul M22 yFaceSBC mul add M23 zFaceSBC mul add CY add def
- /ZFaceSBC M31 xFaceSBC mul M32 yFaceSBC mul add M33 zFaceSBC mul add CZ add def
- /XFaceSCD M11 xFaceSCD mul M12 yFaceSCD mul add M13 zFaceSCD mul add CX add def
- /YFaceSCD M21 xFaceSCD mul M22 yFaceSCD mul add M23 zFaceSCD mul add CY add def
- /ZFaceSCD M31 xFaceSCD mul M32 yFaceSCD mul add M33 zFaceSCD mul add CZ add def
- /XFaceSDA M11 xFaceSDA mul M12 yFaceSDA mul add M13 zFaceSDA mul add CX add def
- /YFaceSDA M21 xFaceSDA mul M22 yFaceSDA mul add M23 zFaceSDA mul add CY add def
- /ZFaceSDA M31 xFaceSDA mul M32 yFaceSDA mul add M33 zFaceSDA mul add CZ add def
-% Normales aux faces
- /NxSAB XFaceSAB CX sub def
- /NySAB YFaceSAB CY sub def
- /NzSAB ZFaceSAB CZ sub def
- /NxSBC XFaceSBC CX sub def
- /NySBC YFaceSBC CY sub def
- /NzSBC ZFaceSBC CZ sub def
- /NxSCD XFaceSCD CX sub def
- /NySCD YFaceSCD CY sub def
- /NzSCD ZFaceSCD CZ sub def
- /NxSDA XFaceSDA CX sub def
- /NySDA YFaceSDA CY sub def
- /NzSDA ZFaceSDA CZ sub def
- /NxABCD CX XS sub def
- /NyABCD CY YS sub def
- /NzABCD CZ ZS sub def
-% Conditions de visibilité
-% rayon vers point de vue
- /RXvueSAB XFaceSAB XpointVue sub def
- /RYvueSAB YFaceSAB YpointVue sub def
- /RZvueSAB ZFaceSAB ZpointVue sub def
- /RXvueSBC XFaceSBC XpointVue sub def
- /RYvueSBC YFaceSBC YpointVue sub def
- /RZvueSBC ZFaceSBC ZpointVue sub def
- /RXvueSCD XFaceSCD XpointVue sub def
- /RYvueSCD YFaceSCD YpointVue sub def
- /RZvueSCD ZFaceSCD ZpointVue sub def
- /RXvueSDA XFaceSDA XpointVue sub def
- /RYvueSDA YFaceSDA YpointVue sub def
- /RZvueSDA ZFaceSDA ZpointVue sub def
- /RXvueABCD CX XpointVue sub def
- /RYvueABCD CY YpointVue sub def
- /RZvueABCD CZ ZpointVue sub def
- /PSAB RXvueSAB NxSAB mul RYvueSAB NySAB mul add RZvueSAB NzSAB mul add def
- /PSBC RXvueSBC NxSBC mul RYvueSBC NySBC mul add RZvueSBC NzSBC mul add def
- /PSCD RXvueSCD NxSCD mul RYvueSCD NySCD mul add RZvueSCD NzSCD mul add def
- /PSDA RXvueSDA NxSDA mul RYvueSDA NySDA mul add RZvueSDA NzSDA mul add def
- /PSABCD RXvueABCD NxABCD mul RYvueABCD NyABCD mul add RZvueABCD NzABCD mul add def
- }
- def
-%
-/MaillageSphere {
-0 increment 360 increment sub {%
- /theta exch def
-departPhi increment 90 increment sub {%
- /phi exch def
-% newpath
- /Xpoint Rsphere theta cos mul phi cos mul def
- /Ypoint Rsphere theta sin mul phi cos mul def
- /Zpoint Rsphere phi sin mul def
-CalculsPointsAfterTransformations
- CalcCoordinates
- moveto
-% Centre de la facette
- /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def
- /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def
- /Zpoint Rsphere phi increment 2 div add sin mul def
-CalculsPointsAfterTransformations
- /xCentreFacette Xabscisse def
- /yCentreFacette Yordonnee def
- /zCentreFacette Zcote def
-% normale à la facette
- /nXfacette xCentreFacette CX sub def
- /nYfacette yCentreFacette CY sub def
- /nZfacette zCentreFacette CZ sub def
-% rayon vers point de vue
- /RXvue xCentreFacette XpointVue sub def
- /RYvue yCentreFacette YpointVue sub def
- /RZvue zCentreFacette ZpointVue sub def
-% test de visibilité
- /PSfacette RXvue nXfacette mul
- RYvue nYfacette mul add
- RZvue nZfacette mul add
- def
-condition {
-theta 1 theta increment add {%
- /theta1 exch def
- /Xpoint Rsphere theta1 cos mul phi cos mul def
- /Ypoint Rsphere theta1 sin mul phi cos mul def
- /Zpoint Rsphere phi sin mul def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-phi 1 phi increment add {
- /phi1 exch def
- /Xpoint Rsphere theta increment add cos mul phi1 cos mul def
- /Ypoint Rsphere theta increment add sin mul phi1 cos mul def
- /Zpoint Rsphere phi1 sin mul def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-theta increment add -1 theta {%
- /theta1 exch def
- /Xpoint Rsphere theta1 cos mul phi increment add cos mul def
- /Ypoint Rsphere theta1 sin mul phi increment add cos mul def
- /Zpoint Rsphere phi increment add sin mul def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-phi increment add -1 phi {
- /phi1 exch def
- /Xpoint Rsphere theta cos mul phi1 cos mul def
- /Ypoint Rsphere theta sin mul phi1 cos mul def
- /Zpoint Rsphere phi1 sin mul def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-} if
-} for
-} for
-} def
-%
-/CylinderThreeD{
-reduction reduction scale
-1 setlinejoin
-0 incrementANGLE 360 {%
- /theta exch def
- 0 incrementHAUTEUR Hcylindre incrementHAUTEUR sub {%
- /H exch def
-% newpath
- /X1 Rcylindre theta cos mul def
- /Y1 Rcylindre theta sin mul def
- /Z1 H def
- /Xpoint X1 def
- /Ypoint Y1 def
- /Zpoint Z1 def
-CalculsPointsAfterTransformations
- /Xfacette Xabscisse def
- /Yfacette Yordonnee def
- /Zfacette Zcote def
- CalcCoordinates
- moveto
-% coordonnées du centre de la facette
- /Xpoint Rcylindre theta incrementANGLE 2 div add cos mul def
- /Ypoint Rcylindre theta incrementANGLE 2 div add sin mul def
- /Zpoint H incrementHAUTEUR 2 div add def
-CalculsPointsAfterTransformations
-% Point sur l'axe du cylindre
-% à la même hauteur que M1
- /Zpoint Z1 def
- /Xpoint 0 def
- /Ypoint 0 def
-CalculsPointsAfterTransformations
-% normale à la facette
- /nXfacette Xfacette Xabscisse sub def
- /nYfacette Yfacette Yordonnee sub def
- /nZfacette Zfacette Zcote sub def
-% rayon vers point de vue
- /RXvue Xfacette XpointVue sub def
- /RYvue Yfacette YpointVue sub def
- /RZvue Zfacette ZpointVue sub def
-% test de visibilité
- /PSfacette nXfacette RXvue mul
- nYfacette RYvue mul add
- nZfacette RZvue mul add
- def
-PSfacette 0 le {
-theta 1 theta incrementANGLE add {%
- /theta1 exch def
- /Xpoint Rcylindre theta1 cos mul def
- /Ypoint Rcylindre theta1 sin mul def
- /Zpoint H def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-H 1 H incrementHAUTEUR add {
- /H1 exch def
- /Xpoint Rcylindre theta incrementANGLE add cos mul def
- /Ypoint Rcylindre theta incrementANGLE add sin mul def
- /Zpoint H1 def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-theta incrementANGLE add -1 theta {%
- /theta1 exch def
- /Xpoint Rcylindre theta1 cos mul def
- /Ypoint Rcylindre theta1 sin mul def
- /Zpoint H incrementHAUTEUR add def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-H incrementHAUTEUR add -1 H {
- /H1 exch def
- /Xpoint Rcylindre theta cos mul def
- /Ypoint Rcylindre theta sin mul def
- /Zpoint H1 def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-} if
-} for
-} for
-% Face supérieure
-% centre de la face supérieure
- /Xpoint 0 def
- /Zpoint Hcylindre def
- /Ypoint 0 def
-CalculsPointsAfterTransformations
- /CxFaceSup Xabscisse def
- /CyFaceSup Yordonnee def
- /CzFaceSup Zcote def
-% centre de la face inférieure
- /CxFaceInf CX def
- /CyFaceInf CY def
- /CzFaceInf CZ def
-% Normale à la face supérieure
- /nXFaceSup CxFaceSup CxFaceInf sub def
- /nYFaceSup CyFaceSup CyFaceInf sub def
- /nZFaceSup CzFaceSup CzFaceInf sub def
-% rayon vers point de vue verd la face inférieure
- /RXvueInf CxFaceInf XpointVue sub def
- /RYvueInf CyFaceInf YpointVue sub def
- /RZvueInf CzFaceInf ZpointVue sub def
-% rayon vers point de vue verd la face supérieure
- /RXvueSup CxFaceSup XpointVue sub def
- /RYvueSup CyFaceSup YpointVue sub def
- /RZvueSup CzFaceSup ZpointVue sub def
-% Visibilité face supérieure
- /PSfaceSup RXvueSup nXFaceSup mul
- RYvueSup nYFaceSup mul add
- RZvueSup nZFaceSup mul add def
-% Visibilité face inférieure
- /PSfaceInf RXvueInf nXFaceSup neg mul
- RYvueInf nYFaceSup mul sub
- RZvueInf nZFaceSup mul sub def
-PSfaceSup 0 le {
-/TableauxPoints [
-0 1 359 {% on décrit le cercle
- /theta exch def [
- /Xpoint Rcylindre theta cos mul def
- /Ypoint Rcylindre theta sin mul def
- /Zpoint Hcylindre def
-CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
-gsave
-newpath
- TableauxPoints 0 get aload pop moveto
-0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
-0.7 setgray
-closepath
-fill
-grestore
- } if
-% face inférieure
-PSfaceInf 0 le {
-/TableauxPoints [
-0 1 359 {% on décrit le cercle
- /theta exch def [
- /Xpoint Rcylindre theta cos mul def
- /Ypoint Rcylindre theta sin mul def
- /Zpoint 0 def
-CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
-gsave
-newpath
- TableauxPoints 0 get aload pop moveto
- 0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
-0.7 setgray
-closepath
-fill
-grestore
- } if
- } def
-%
- %
-/ConeThreeD{
- /AngleCone Rcone Hcone atan def
- /TanAngleCone AngleCone dup sin exch cos div def
- /incrementANGLE 10 def
- /incrementHAUTEUR Hcone fracHeight mul 5 div def
-1 setlinejoin
-newpath
-0 incrementANGLE 360 {%
- /theta exch def
- 0 incrementHAUTEUR Hcone fracHeight mul incrementHAUTEUR sub {%
- /H exch def
- % normale à la facette
- /nXfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add cos mul
- mul def
- /nYfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add sin mul
- mul def
- /nZfacette Hcone AngleCone sin dup mul mul def
- /Xpoint nXfacette def
- /Ypoint nYfacette def
- /Zpoint nZfacette def
-CalculsPointsAfterTransformations
- /nXfacette Xabscisse CX sub def
- /nYfacette Yordonnee CY sub def
- /nZfacette Zcote CZ sub def
-%
- /OK Hcone H sub TanAngleCone mul def
- /Xpoint OK theta cos mul def
- /Ypoint OK theta sin mul def
- /Zpoint H def
-CalculsPointsAfterTransformations
- /Xfacette Xabscisse def
- /Yfacette Yordonnee def
- /Zfacette Zcote def
- CalcCoordinates
- moveto
-% coordonnées du centre de la facette
- /OK Hcone H incrementHAUTEUR 2 div add sub TanAngleCone mul def
- /Xpoint OK theta incrementANGLE 2 div add cos mul def
- /Ypoint OK theta incrementANGLE 2 div add sin mul def
- /Zpoint H incrementHAUTEUR 2 div add def
-CalculsPointsAfterTransformations
- /XcentreFacette Xabscisse def
- /YcentreFacette Yordonnee def
- /ZcentreFacette Zcote def
-% rayon vers point de vue
- /RXvue XcentreFacette XpointVue sub def
- /RYvue YcentreFacette YpointVue sub def
- /RZvue ZcentreFacette ZpointVue sub def
-% test de visibilité
- /PSfacette nXfacette RXvue mul
- nYfacette RYvue mul add
- nZfacette RZvue mul add
- def
-PSfacette 0 le {
-theta 1 theta incrementANGLE add {%
- /theta1 exch def
- /OK Hcone H sub TanAngleCone mul def
- /Xpoint OK theta1 cos mul def
- /Ypoint OK theta1 sin mul def
- /Zpoint H def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-H 1 H incrementHAUTEUR add {
- /H1 exch def
- /OK Hcone H1 sub TanAngleCone mul def
- /Xpoint OK theta incrementANGLE add cos mul def
- /Ypoint OK theta incrementANGLE add sin mul def
- /Zpoint H1 def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-theta incrementANGLE add -1 theta {%
- /theta1 exch def
- /OK Hcone H incrementHAUTEUR add sub TanAngleCone mul def
- /Xpoint OK theta1 cos mul def
- /Ypoint OK theta1 sin mul def
- /Zpoint H incrementHAUTEUR add def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-H incrementHAUTEUR add -1 H {
- /H1 exch def
- /OK Hcone H1 sub TanAngleCone mul def
- /Xpoint OK theta cos mul def
- /Ypoint OK theta sin mul def
- /Zpoint H1 def
-CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-} if
-} for
-} for
-% centre de la base inférieure après transformations
- /CxFaceInf CX def
- /CyFaceInf CY def
- /CzFaceInf CZ def
-% modification du 16/11/2002
-% /Xpoint CxFaceInf def
-% /Ypoint CyFaceInf def
-% /Zpoint CzFaceInf def
- /Xpoint 0 def
- /Ypoint 0 def
- /Zpoint 0 def
-% fin modification du 16/11/2002
-CalculsPointsAfterTransformations
- /CxBaseInf Xabscisse def
- /CyBaseInf Yordonnee def
- /CzBaseInf Zcote def
-% centre de la base supérieure avant transformations
- /CxFaceSup 0 def
- /CyFaceSup 0 def
- /CzFaceSup Hcone fracHeight mul def
-% Sommet du cone
- /Xpoint 0 def
- /Ypoint 0 def
- /Zpoint Hcone def
-CalculsPointsAfterTransformations
- /XsommetCone Xabscisse def
- /YsommetCone Yordonnee def
- /ZsommetCone Zcote def
-% Normale extérieure à la base inférieure
- /nXBaseInf CxFaceInf XsommetCone sub def
- /nYBaseInf CyFaceInf YsommetCone sub def
- /nZBaseInf CzFaceInf ZsommetCone sub def
-% centre de la base supérieure
- /Xpoint CxFaceSup def
- /Ypoint CyFaceSup def
- /Zpoint CzFaceSup def
-CalculsPointsAfterTransformations
- /CxBaseSup Xabscisse def
- /CyBaseSup Yordonnee def
- /CzBaseSup Zcote def
-% Normale extérieure à la base supérieure
- /nXBaseSup XsommetCone CxFaceSup sub def
- /nYBaseSup YsommetCone CyFaceSup sub def
- /nZBaseSup ZsommetCone CzFaceSup sub def
-% rayon vers point de vue
- /RXvueSup CxBaseSup XpointVue sub def
- /RYvueSup CyBaseSup YpointVue sub def
- /RZvueSup CzBaseSup ZpointVue sub def
- /RXvueInf CxBaseInf XpointVue sub def
- /RYvueInf CyBaseInf YpointVue sub def
- /RZvueInf CzBaseInf ZpointVue sub def
-% Visibilité de la base inférieure
- /PSbaseInfCone nXBaseInf RXvueInf mul
- nYBaseInf RYvueInf mul add
- nZBaseInf RZvueInf mul add def
-% Visibilité de la base supérieure
- /PSbaseSupCone nXBaseSup RXvueSup mul
- nYBaseSup RYvueSup mul add
- nZBaseSup RZvueSup mul add def
-PSbaseInfCone 0 le {
-/TableauxPoints [
-0 1 359 {% on décrit le cercle
- /theta exch def [
- /Xpoint Rcone theta cos mul def
- /Ypoint Rcone theta sin mul def
- /Zpoint 0 def
-CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
-gsave
-newpath
- TableauxPoints 0 get aload pop moveto
-0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
-0.7 setgray
-closepath
-fill
-grestore
- } if
-%% PSbaseSupCone 0 le {
-%% modifié le 31/10/2003
-%PSbaseSupCone 0 ge {
-PSbaseSupCone 0 le {
-/TableauxPoints [
-0 1 359 {% on décrit le cercle
- /theta exch def [
- /OK Hcone 1 fracHeight sub mul TanAngleCone mul def
- /Xpoint OK theta cos mul def
- /Ypoint OK theta sin mul def
- /Zpoint Hcone fracHeight mul def
-CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
-gsave
-newpath
- TableauxPoints 0 get aload pop moveto
-0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
-0.7 setgray
-closepath
-fill
-grestore
- } if
- } def
-/PortionSphere{%
- /Xpoint Rsphere psTHETA dTHETA neg add cos mul psPHI dPHI sub cos mul def
- /Ypoint Rsphere psTHETA dTHETA neg add sin mul psPHI dPHI sub cos mul def
- /Zpoint Rsphere psPHI dPHI sub sin mul def
-CalculsPointsAfterTransformations
- /xCentreFacette Xabscisse def
- /yCentreFacette Yordonnee def
- /zCentreFacette Zcote def
-% normale à la facette
- /nXfacette xCentreFacette CX sub def
- /nYfacette yCentreFacette CY sub def
- /nZfacette zCentreFacette CZ sub def
-% rayon vers point de vue
- /RXvue xCentreFacette XpointVue sub def
- /RYvue yCentreFacette YpointVue sub def
- /RZvue zCentreFacette ZpointVue sub def
-% test de visibilité
- /PSfacette RXvue nXfacette mul
- RYvue nYfacette mul add
- RZvue nZfacette mul add
- def
-PSfacette 0 le {
-CalcCoordinates
-newpath
- moveto
-psTHETA dTHETA sub 1 psTHETA dTHETA add {
- /Theta exch def
- /Xpoint Rsphere Theta cos psPHI dPHI sub cos mul mul def
- /Ypoint Rsphere Theta sin psPHI dPHI sub cos mul mul def
- /Zpoint Rsphere psPHI dPHI sub sin mul def
- CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-psPHI dPHI sub 1 psPHI dPHI add {
- /Phi exch def
- /Xpoint Rsphere psTHETA dTHETA add cos Phi cos mul mul def
- /Ypoint Rsphere psTHETA dTHETA add sin Phi cos mul mul def
- /Zpoint Rsphere Phi sin mul def
- CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-psTHETA dTHETA add -1 psTHETA dTHETA sub {
- /Theta exch def
- /Xpoint Rsphere Theta cos psPHI dPHI add cos mul mul def
- /Ypoint Rsphere Theta sin psPHI dPHI add cos mul mul def
- /Zpoint Rsphere psPHI dPHI add sin mul def
- CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-psPHI dPHI add -1 psPHI dPHI sub {
- /Phi exch def
- /Xpoint Rsphere psTHETA dTHETA sub cos Phi cos mul mul def
- /Ypoint Rsphere psTHETA dTHETA sub sin Phi cos mul mul def
- /Zpoint Rsphere Phi sin mul def
- CalculsPointsAfterTransformations
- CalcCoordinates
- lineto
- } for
-closepath
-} if
-} def
-% Dodecahedron : 31 décembre 2003
-% datas : Graphisme scientifique R.Dony
-% Masson ed. page 240
-/Dodecahedron{%
- /XA M11 0 mul M12 A 0.607062 mul mul add M13 A mul 0.794655 mul add CX add def
- /YA M21 0 mul M22 A 0.607062 mul mul add M23 A mul 0.794655 mul add CY add def
- /ZA M31 0 mul M32 A 0.607062 mul mul add M33 A mul 0.794655 mul add CZ add def
- /XB M11 A mul -0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def
- /YB M21 A mul -0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def
- /ZB M31 A mul -0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def
- /XC M11 A mul -0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def
- /YC M21 A mul -0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def
- /ZC M31 A mul -0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def
- /XD M11 A mul 0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def
- /YD M21 A mul 0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def
- /ZD M31 A mul 0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def
- /XE M11 A mul 0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def
- /YE M21 A mul 0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def
- /ZE M31 A mul 0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def
- /XF M11 A mul 0 mul M12 A mul 0.982247 mul add M13 A mul 0.175925 mul add CX add def
- /YF M21 A mul 0 mul M22 A mul 0.982247 mul add M23 A mul 0.175925 mul add CY add def
- /ZF M31 A mul 0 mul M32 A mul 0.982247 mul add M33 A mul 0.175925 mul add CZ add def
- /XG M11 A mul -0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def
- /YG M21 A mul -0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def
- /ZG M31 A mul -0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def
- /XH M11 A mul -0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def
- /YH M21 A mul -0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def
- /ZH M31 A mul -0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def
- /XI M11 A mul 0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def
- /YI M21 A mul 0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def
- /ZI M31 A mul 0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def
- /XJ M11 A mul 0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def
- /YJ M21 A mul 0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def
- /ZJ M31 A mul 0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def
- /XK M11 A mul 0 mul M12 A mul -0.982247 mul add M13 A mul -0.1875925 mul add CX add def
- /YK M21 A mul 0 mul M22 A mul -0.982247 mul add M23 A mul -0.1875925 mul add CY add def
- /ZK M31 A mul 0 mul M32 A mul -0.982247 mul add M33 A mul -0.1875925 mul add CZ add def
- /XL M11 A mul 0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def
- /YL M21 A mul 0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def
- /ZL M31 A mul 0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def
- /XM M11 A mul 0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def
- /YM M21 A mul 0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def
- /ZM M31 A mul 0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def
- /XN M11 A mul -0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def
- /YN M21 A mul -0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def
- /ZN M31 A mul -0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def
- /XO M11 A mul -0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def
- /YO M21 A mul -0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def
- /ZO M31 A mul -0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def
- /XP M11 A mul -0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def
- /YP M21 A mul -0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def
- /ZP M31 A mul -0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def
- /XQ M11 A mul -0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def
- /YQ M21 A mul -0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def
- /ZQ M31 A mul -0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def
- /XR M11 A mul 0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def
- /YR M21 A mul 0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def
- /ZR M31 A mul 0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def
- /XS M11 A mul 0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def
- /YS M21 A mul 0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def
- /ZS M31 A mul 0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def
- /XT M11 0 mul M12 A -0.607062 mul mul add M13 A mul -0.794655 mul add CX add def
- /YT M21 0 mul M22 A -0.607062 mul mul add M23 A mul -0.794655 mul add CY add def
- /ZT M31 0 mul M32 A -0.607062 mul mul add M33 A mul -0.794655 mul add CZ add def
-% Centres des faces : condition de visibilité
-% FACE 1 pentagone régulier ABCDE
-% OC1
- /XC1 XA XB add XC add XD add XE add 5 div def
- /YC1 YA YB add YC add YD add YE add 5 div def
- /ZC1 ZA ZB add ZC add ZD add ZE add 5 div def
-% Normale à la face 1
- /NX1 XC1 CX sub def
- /NY1 YC1 CY sub def
- /NZ1 ZC1 CZ sub def
-% rayon vers point de vue
- /RXvue1 XC1 XpointVue sub def
- /RYvue1 YC1 YpointVue sub def
- /RZvue1 ZC1 ZpointVue sub def
-% produit scalaire
- /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def
-% FACE 2 pentagone régulier EDILJ
-% OC2
- /XC2 XE XD add XI add XL add XJ add 5 div def
- /YC2 YE YD add YI add YL add YJ add 5 div def
- /ZC2 ZE ZD add ZI add ZL add ZJ add 5 div def
-% Normale à la face 2
- /NX2 XC2 CX sub def
- /NY2 YC2 CY sub def
- /NZ2 ZC2 CZ sub def
-% rayon vers point de vue
- /RXvue2 XC2 XpointVue sub def
- /RYvue2 YC2 YpointVue sub def
- /RZvue2 ZC2 ZpointVue sub def
-% produit scalaire
- /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def
-% FACE 3 pentagone régulier EJMFA
-% OC3
- /XC3 XE XJ add XM add XF add XA add 5 div def
- /YC3 YE YJ add YM add YF add YA add 5 div def
- /ZC3 ZE ZJ add ZM add ZF add ZA add 5 div def
-% Normale à la face 2
- /NX3 XC3 CX sub def
- /NY3 YC3 CY sub def
- /NZ3 ZC3 CZ sub def
-% rayon vers point de vue
- /RXvue3 XC3 XpointVue sub def
- /RYvue3 YC3 YpointVue sub def
- /RZvue3 ZC3 ZpointVue sub def
-% produit scalaire
- /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def
-% FACE 4 pentagone régulier AFNGB
-% OC4
- /XC4 XA XF add XN add XG add XB add 5 div def
- /YC4 YA YF add YN add YG add YB add 5 div def
- /ZC4 ZA ZF add ZN add ZG add ZB add 5 div def
-% Normale à la face 4
- /NX4 XC4 CX sub def
- /NY4 YC4 CY sub def
- /NZ4 ZC4 CZ sub def
-% rayon vers point de vue
- /RXvue4 XC4 XpointVue sub def
- /RYvue4 YC4 YpointVue sub def
- /RZvue4 ZC4 ZpointVue sub def
-% produit scalaire
- /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def
-% FACE 5 pentagone régulier BGOHC
-% OC5
- /XC5 XB XG add XO add XH add XC add 5 div def
- /YC5 YB YG add YO add YH add YC add 5 div def
- /ZC5 ZB ZG add ZO add ZH add ZC add 5 div def
-% Normale à la face 5
- /NX5 XC5 CX sub def
- /NY5 YC5 CY sub def
- /NZ5 ZC5 CZ sub def
-% rayon vers point de vue
- /RXvue5 XC5 XpointVue sub def
- /RYvue5 YC5 YpointVue sub def
- /RZvue5 ZC5 ZpointVue sub def
-% produit scalaire
- /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def
-% FACE 6 pentagone régulier CHKID
-% OC6
- /XC6 XC XH add XK add XI add XD add 5 div def
- /YC6 YC YH add YK add YI add YD add 5 div def
- /ZC6 ZC ZH add ZK add ZI add ZD add 5 div def
-% Normale à la face 6
- /NX6 XC6 CX sub def
- /NY6 YC6 CY sub def
- /NZ6 ZC6 CZ sub def
-% rayon vers point de vue
- /RXvue6 XC6 XpointVue sub def
- /RYvue6 YC6 YpointVue sub def
- /RZvue6 ZC6 ZpointVue sub def
-% produit scalaire
- /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def
-% FACE 7 pentagone régulier KTSLI
-% OC7
- /XC7 XK XT add XS add XL add XI add 5 div def
- /YC7 YK YT add YS add YL add YI add 5 div def
- /ZC7 ZK ZT add ZS add ZL add ZI add 5 div def
-% Normale à la face 7
- /NX7 XC7 CX sub def
- /NY7 YC7 CY sub def
- /NZ7 ZC7 CZ sub def
-% rayon vers point de vue
- /RXvue7 XC7 XpointVue sub def
- /RYvue7 YC7 YpointVue sub def
- /RZvue7 ZC7 ZpointVue sub def
-% produit scalaire
- /PS7 RXvue7 NX7 mul RYvue7 NY7 mul add RZvue7 NZ7 mul add def
-% FACE 8 pentagone régulier LSRMJ
-% OC8
- /XC8 XL XS add XR add XM add XJ add 5 div def
- /YC8 YL YS add YR add YM add YJ add 5 div def
- /ZC8 ZL ZS add ZR add ZM add ZJ add 5 div def
-% Normale à la face 8
- /NX8 XC8 CX sub def
- /NY8 YC8 CY sub def
- /NZ8 ZC8 CZ sub def
-% rayon vers point de vue
- /RXvue8 XC8 XpointVue sub def
- /RYvue8 YC8 YpointVue sub def
- /RZvue8 ZC8 ZpointVue sub def
-% produit scalaire
- /PS8 RXvue8 NX8 mul RYvue8 NY8 mul add RZvue8 NZ8 mul add def
-% FACE 9 pentagone régulier MRQNF
-% OC9
- /XC9 XM XR add XQ add XN add XF add 5 div def
- /YC9 YM YR add YQ add YN add YF add 5 div def
- /ZC9 ZM ZR add ZQ add ZN add ZF add 5 div def
-% Normale à la face 6
- /NX9 XC9 CX sub def
- /NY9 YC9 CY sub def
- /NZ9 ZC9 CZ sub def
-% rayon vers point de vue
- /RXvue9 XC9 XpointVue sub def
- /RYvue9 YC9 YpointVue sub def
- /RZvue9 ZC9 ZpointVue sub def
-% produit scalaire
- /PS9 RXvue9 NX9 mul RYvue9 NY9 mul add RZvue9 NZ9 mul add def
-% FACE 10 pentagone régulier NQPOG
-% OC10
- /XC10 XN XQ add XP add XO add XG add 5 div def
- /YC10 YN YQ add YP add YO add YG add 5 div def
- /ZC10 ZN ZQ add ZP add ZO add ZG add 5 div def
-% Normale à la face 6
- /NX10 XC10 CX sub def
- /NY10 YC10 CY sub def
- /NZ10 ZC10 CZ sub def
-% rayon vers point de vue
- /RXvue10 XC10 XpointVue sub def
- /RYvue10 YC10 YpointVue sub def
- /RZvue10 ZC10 ZpointVue sub def
-% produit scalaire
- /PS10 RXvue10 NX10 mul RYvue10 NY10 mul add RZvue10 NZ10 mul add def
-% FACE 11 pentagone régulier OPTKH
-% OC11
- /XC11 XO XP add XT add XK add XH add 5 div def
- /YC11 YO YP add YT add YK add YH add 5 div def
- /ZC11 ZO ZP add ZT add ZK add ZH add 5 div def
-% Normale à la face 11
- /NX11 XC11 CX sub def
- /NY11 YC11 CY sub def
- /NZ11 ZC11 CZ sub def
-% rayon vers point de vue
- /RXvue11 XC11 XpointVue sub def
- /RYvue11 YC11 YpointVue sub def
- /RZvue11 ZC11 ZpointVue sub def
-% produit scalaire
- /PS11 RXvue11 NX11 mul RYvue11 NY11 mul add RZvue11 NZ11 mul add def
-% FACE 12 pentagone régulier PQRST
-% OC12
- /XC12 XP XQ add XR add XS add XT add 5 div def
- /YC12 YP YQ add YR add YS add YT add 5 div def
- /ZC12 ZP ZQ add ZR add ZS add ZT add 5 div def
-% Normale à la face 12
- /NX12 XC12 CX sub def
- /NY12 YC12 CY sub def
- /NZ12 ZC12 CZ sub def
-% rayon vers point de vue
- /RXvue12 XC12 XpointVue sub def
- /RYvue12 YC12 YpointVue sub def
- /RZvue12 ZC12 ZpointVue sub def
-% produit scalaire
- /PS12 RXvue12 NX12 mul RYvue12 NY12 mul add RZvue12 NZ12 mul add def
-% faceOne ABDCE
-PS1 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YA def
- /Zcote ZA def
- /Xabscisse XA def
- CalcCoordinates
- moveto
- /Zcote ZB def
- /Xabscisse XB def
- /Yordonnee YB def
- CalcCoordinates
- lineto
- /Zcote ZC def
- /Xabscisse XC def
- /Yordonnee YC def
- CalcCoordinates
- lineto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
- /Zcote ZE def
- /Xabscisse XE def
- /Yordonnee YE def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.1 0.1 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face2 EDILJ
-PS2 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YE def
- /Zcote ZE def
- /Xabscisse XE def
- CalcCoordinates
- moveto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
- /Zcote ZI def
- /Xabscisse XI def
- /Yordonnee YI def
- CalcCoordinates
- lineto
- /Zcote ZL def
- /Xabscisse XL def
- /Yordonnee YL def
- CalcCoordinates
- lineto
- /Zcote ZJ def
- /Xabscisse XJ def
- /Yordonnee YJ def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.15 0.15 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face3 EJMFA
-PS3 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YE def
- /Zcote ZE def
- /Xabscisse XE def
- CalcCoordinates
- moveto
- /Zcote ZJ def
- /Xabscisse XJ def
- /Yordonnee YJ def
- CalcCoordinates
- lineto
- /Zcote ZM def
- /Xabscisse XM def
- /Yordonnee YM def
- CalcCoordinates
- lineto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
- /Zcote ZA def
- /Xabscisse XA def
- /Yordonnee YA def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.2 0.2 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face4 AFNGB
-PS4 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YA def
- /Zcote ZA def
- /Xabscisse XA def
- CalcCoordinates
- moveto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
- /Zcote ZN def
- /Xabscisse XN def
- /Yordonnee YN def
- CalcCoordinates
- lineto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
- /Zcote ZB def
- /Xabscisse XB def
- /Yordonnee YB def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.25 0.25 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face5 BGOHC
-PS5 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YB def
- /Zcote ZB def
- /Xabscisse XB def
- CalcCoordinates
- moveto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
- /Zcote ZO def
- /Xabscisse XO def
- /Yordonnee YO def
- CalcCoordinates
- lineto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
- /Zcote ZC def
- /Xabscisse XC def
- /Yordonnee YC def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.3 0.3 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face6 CHKID
-PS6 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YC def
- /Zcote ZC def
- /Xabscisse XC def
- CalcCoordinates
- moveto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
- /Zcote ZK def
- /Xabscisse XK def
- /Yordonnee YK def
- CalcCoordinates
- lineto
- /Zcote ZI def
- /Xabscisse XI def
- /Yordonnee YI def
- CalcCoordinates
- lineto
- /Zcote ZD def
- /Xabscisse XD def
- /Yordonnee YD def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.35 0.35 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face7 KTSLI
-PS7 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YK def
- /Zcote ZK def
- /Xabscisse XK def
- CalcCoordinates
- moveto
- /Zcote ZT def
- /Xabscisse XT def
- /Yordonnee YT def
- CalcCoordinates
- lineto
- /Zcote ZS def
- /Xabscisse XS def
- /Yordonnee YS def
- CalcCoordinates
- lineto
- /Zcote ZL def
- /Xabscisse XL def
- /Yordonnee YL def
- CalcCoordinates
- lineto
- /Zcote ZI def
- /Xabscisse XI def
- /Yordonnee YI def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.4 0.4 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face8 LSRMJ
-PS8 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YL def
- /Zcote ZL def
- /Xabscisse XL def
- CalcCoordinates
- moveto
- /Zcote ZS def
- /Xabscisse XS def
- /Yordonnee YS def
- CalcCoordinates
- lineto
- /Zcote ZR def
- /Xabscisse XR def
- /Yordonnee YR def
- CalcCoordinates
- lineto
- /Zcote ZM def
- /Xabscisse XM def
- /Yordonnee YM def
- CalcCoordinates
- lineto
- /Zcote ZJ def
- /Xabscisse XJ def
- /Yordonnee YJ def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.45 0.45 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face9 MRQNF
-PS9 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YM def
- /Zcote ZM def
- /Xabscisse XM def
- CalcCoordinates
- moveto
- /Zcote ZR def
- /Xabscisse XR def
- /Yordonnee YR def
- CalcCoordinates
- lineto
- /Zcote ZQ def
- /Xabscisse XQ def
- /Yordonnee YQ def
- CalcCoordinates
- lineto
- /Zcote ZN def
- /Xabscisse XN def
- /Yordonnee YN def
- CalcCoordinates
- lineto
- /Zcote ZF def
- /Xabscisse XF def
- /Yordonnee YF def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.5 0.5 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face10 NQPOG
-PS10 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YN def
- /Zcote ZN def
- /Xabscisse XN def
- CalcCoordinates
- moveto
- /Zcote ZQ def
- /Xabscisse XQ def
- /Yordonnee YQ def
- CalcCoordinates
- lineto
- /Zcote ZP def
- /Xabscisse XP def
- /Yordonnee YP def
- CalcCoordinates
- lineto
- /Zcote ZO def
- /Xabscisse XO def
- /Yordonnee YO def
- CalcCoordinates
- lineto
- /Zcote ZG def
- /Xabscisse XG def
- /Yordonnee YG def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.55 0.55 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face11 OPTKH
-PS11 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YO def
- /Zcote ZO def
- /Xabscisse XO def
- CalcCoordinates
- moveto
- /Zcote ZP def
- /Xabscisse XP def
- /Yordonnee YP def
- CalcCoordinates
- lineto
- /Zcote ZT def
- /Xabscisse XT def
- /Yordonnee YT def
- CalcCoordinates
- lineto
- /Zcote ZK def
- /Xabscisse XK def
- /Yordonnee YK def
- CalcCoordinates
- lineto
- /Zcote ZH def
- /Xabscisse XH def
- /Yordonnee YH def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.6 0.6 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-% face12 PQRST
-PS12 0 Condition { %
-reduction reduction scale
-1 setlinejoin
-newpath
- /Yordonnee YP def
- /Zcote ZP def
- /Xabscisse XP def
- CalcCoordinates
- moveto
- /Zcote ZQ def
- /Xabscisse XQ def
- /Yordonnee YQ def
- CalcCoordinates
- lineto
- /Zcote ZR def
- /Xabscisse XR def
- /Yordonnee YR def
- CalcCoordinates
- lineto
- /Zcote ZS def
- /Xabscisse XS def
- /Yordonnee YS def
- CalcCoordinates
- lineto
- /Zcote ZT def
- /Xabscisse XT def
- /Yordonnee YT def
- CalcCoordinates
- lineto
-closepath
-gsave
-0.05 0.65 0.65 0 setcmykcolor
-fill
-grestore
-stroke
-} if
-}
-def
-end
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.sty b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.sty
deleted file mode 100644
index 3895513e2a..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.sty
+++ /dev/null
@@ -1,8 +0,0 @@
-\RequirePackage{pstricks}
-\ProvidesPackage{pst-vue3d}[2007/03/26 package wrapper for
- pst-vue3d.tex (hv)]
-\input{pst-vue3d.tex}
-\IfFileExists{pst-vue3d.pro}{\@addtofilelist{pst-vue3d.pro}}{}%
-\ProvidesFile{pst-vue3d.tex}
- [\filedate\space v\fileversion\space `pst-vue3d' (ML,hv)]
-\endinput
diff --git a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.tex b/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.tex
deleted file mode 100644
index e6ffa14446..0000000000
--- a/graphics/pstricks/contrib/pst-vue3d/pst-vue3d.tex
+++ /dev/null
@@ -1,1640 +0,0 @@
-%% This is file `pst-vue3d.tex',
-%%
-%% IMPORTANT NOTICE:
-%%
-%% Package `pst-vue3d.tex'
-%%
-%% Manuel Luque <Mluque5130@aol.com> (France)
-%% Herbert Voss <voss _at_ pstricks.de (Germany)
-%%
-%% 2008/02/21
-%%
-%% This program can be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License Distributed from CTAN archives
-%% in directory macros/latex/base/lppl.txt.
-%%
-%% DESCRIPTION:
-%% `pst-vue3d' is a PSTricks package to define 3d views
-%% ChangeLog (at end)
-%%
-\csname PSTVueTroisDLoaded\endcsname
-\let\PSTVueTroisDLoaded\endinput
-% Require PSTricks and pst-node packages
-\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
-\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
-\ifx\PSTthreeDLoaded\endinput\else\input pst-3d.tex\fi
-\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi
-%
-\def\fileversion{1.24}%
-\def\filedate{2008/02/21}%
-\message{`pst-vue3d v\fileversion, \filedate\space (ML,hv)}%
-\edef\PstAtCode{\the\catcode`\@}\catcode`\@=11\relax
-\pst@addfams{pst-vue3d}% for pst-xkey
-%%%%
-\define@key[psset]{pst-vue3d}{scale}{\def\psk@TroisD@scale{#1}} % echelle
-\define@key[psset]{pst-vue3d}{RotX}{\def\psk@TroisD@RotX{#1}} % rotation autour de Ox en degrés
-\define@key[psset]{pst-vue3d}{RotY}{\def\psk@TroisD@RotY{#1}} % rotation autour de Oy en degrés
-\define@key[psset]{pst-vue3d}{RotZ}{\def\psk@TroisD@RotZ{#1}} % rotation autour de OZ en degrés
-\define@key[psset]{pst-vue3d}{A}{\def\psk@TroisD@A{#1}} % double d'une arête du parallèlépipède
-\define@key[psset]{pst-vue3d}{B}{\def\psk@TroisD@B{#1}} % double d'une arête du parallèlépipède
-\define@key[psset]{pst-vue3d}{C}{\def\psk@TroisD@C{#1}} % double de l'arête du parallèlépipède
-\define@key[psset]{pst-vue3d}{Rtetraedre}{\def\psk@TroisD@Rtetraedre{#1}} % Rayon du cercle tétraèdre
-\define@key[psset]{pst-vue3d}{ColorFaceA}{\def\psk@TroisD@TetraedreColorFaceA{#1}} % couleur de la face A du tétraèdre
-\define@key[psset]{pst-vue3d}{ColorFaceB}{\def\psk@TroisD@TetraedreColorFaceB{#1}} % couleur de la face B du tétraèdre
-\define@key[psset]{pst-vue3d}{ColorFaceC}{\def\psk@TroisD@TetraedreColorFaceC{#1}} % couleur de la face C du tétraèdre
-\define@key[psset]{pst-vue3d}{ColorFaceD}{\def\psk@TroisD@TetraedreColorFaceD{#1}} % couleur de la face D du tétraèdre
-\define@key[psset]{pst-vue3d}{ColorFaceE}{\def\psk@TroisD@TetraedreColorFaceE{#1}} % couleur de la face D du tétraèdre
-\define@key[psset]{pst-vue3d}{fracHeight}{\def\psk@TroisD@fracHeight{#1}} % fraction de la hauteur du cone
-\define@key[psset]{pst-vue3d}{fracHcone}{\def\psk@TroisD@fracHeight{#1}} % for compatibility
-%
-\define@key[psset]{pst-vue3d}{normaleLongitude}{\def\psk@TroisD@normaleLongitude{#1}} % coordonnées angulaires de la normale
-\define@key[psset]{pst-vue3d}{normaleLatitude}{\def\psk@TroisD@normaleLatitude{#1}} % coordonnées angulaires de la normale
-\define@key[psset]{pst-vue3d}{pas}{\def\psk@TroisD@pas{#1}} % en cm résolution du tracé
-\define@key[psset]{pst-vue3d}{grille}{\def\psk@TroisD@grille{#1}} % Pas de la grille en cm
-%
-\define@key[psset]{pst-vue3d}{THETA}{\def\psk@TroisD@Theta{#1}}
-\define@key[psset]{pst-vue3d}{PHI}{\def\psk@TroisD@Phi{#1}}
-\define@key[psset]{pst-vue3d}{DeltaTHETA}{\def\psk@TroisD@DeltaTheta{#1}}
-\define@key[psset]{pst-vue3d}{DeltaPHI}{\def\psk@TroisD@DeltaPhi{#1}}
-\define@key[psset]{pst-vue3d}{PortionSphereTHETA}{\def\psk@TroisD@PortionSphereTHETA{#1}}
-\define@key[psset]{pst-vue3d}{PortionSpherePHI}{\def\psk@TroisD@PortionSpherePHI{#1}}
-\define@key[psset]{pst-vue3d}{PhiCercle}{\def\psk@TroisD@PhiCercle{#1}}
-\define@key[psset]{pst-vue3d}{ThetaMeridien}{\def\psk@TroisD@ThetaMeridien{#1}}
-\define@key[psset]{pst-vue3d}{Dobs}{\def\psk@TroisD@Dobs{#1}}
-\define@key[psset]{pst-vue3d}{Decran}{\def\psk@TroisD@Ecran{#1}}
-%
-\psset[pst-vue3d]{THETA=30,PHI=10,%
- Dobs=100,Decran=10,%
- normaleLongitude=45,%
- normaleLatitude=45,%
- PhiCercle=0,%
- ThetaMeridien=0,%
- pas=1,%
- grille=10,%
- scale=1,%
- RotX=0,RotY=0,RotZ=0,%
- A=10,B=10,C=10,%
- Rtetraedre=5,%
- ColorFaceD=cyan,ColorFaceA=magenta,ColorFaceB=red,%
- ColorFaceC=blue,ColorFaceE=yellow,%
- fracHeight=1,%
- DeltaTHETA=10,DeltaPHI=10,%
- PortionSphereTHETA=0,PortionSpherePHI=0}
-% ajout du 28 août 2003
-% colorier au choix les faces du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceOne}{\def\psk@TroisD@CubeColorFaceOne{#1}} % couleur de la face 1 du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceTwo}{\def\psk@TroisD@CubeColorFaceTwo{#1}} % couleur de la face 2 du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceThree}{\def\psk@TroisD@CubeColorFaceThree{#1}} % couleur de la face 3 du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceFour}{\def\psk@TroisD@CubeColorFaceFour{#1}} % couleur de la face 4 du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceFive}{\def\psk@TroisD@CubeColorFaceFive{#1}} % couleur de la face 5 du cube
-\define@key[psset]{pst-vue3d}{CubeColorFaceSix}{\def\psk@TroisD@CubeColorFaceSix{#1}} % couleur de la face 6 du cube
-\psset[pst-vue3d]{CubeColorFaceOne= 1 1 0 ,
- CubeColorFaceTwo= 0.9 0.9 0 ,
- CubeColorFaceThree= 0.8 0.8 0 ,
- CubeColorFaceFour= 0.7 0.7 0 ,
- CubeColorFaceFive= 0.6 0.6 0 ,
- CubeColorFaceSix= 0.5 0.5 0 }
-% fin 28 août 2003
-% ajout 27 octobre 2003
-\define@boolkey[psset]{pst-vue3d}[Pst@]{CubeInside}[true]{}
-\psset[pst-vue3d]{CubeInside=false}
-% hv 2003-12-20
-\define@boolkey[psset]{pst-vue3d}[Pst@]{SphericalCoor}[true]{}
-\psset[pst-vue3d]{SphericalCoor=false}
-%
-\def\variablesTroisD{%
- 0 0 translate
-% hv 2005-04-30 --->beg
- /xUnit \pst@number\psxunit def
- /yUnit \pst@number\psyunit def
-% hv 2005-04-30 <---end
- /reduction \psk@TroisD@scale\space def
- /RotX \psk@TroisD@RotX\space def
- /RotY \psk@TroisD@RotY\space def
- /RotZ \psk@TroisD@RotZ\space def
- /A \psk@TroisD@A\space def
- /B \psk@TroisD@B\space def
- /C \psk@TroisD@C\space def
- /RayonBaseTetraedre \psk@TroisD@Rtetraedre\space def
- /fracHeight \psk@TroisD@fracHeight\space def
- /Rpoint A 4 div def
- /nTheta \psk@TroisD@normaleLongitude\space def
- /nPhi \psk@TroisD@normaleLatitude\space def
- /S1 \psk@TroisD@normaleLongitude\space sin def
- /C1 \psk@TroisD@normaleLongitude\space cos def
- /S2 \psk@TroisD@normaleLatitude\space sin def
- /C2 \psk@TroisD@normaleLatitude\space cos def
- /THETA \psk@TroisD@Theta\space def
- /PHI \psk@TroisD@Phi\space def
- /dTHETA \psk@TroisD@DeltaTheta\space def
- /dPHI \psk@TroisD@DeltaPhi\space def
- /psTHETA \psk@TroisD@PortionSphereTHETA\space def
- /psPHI \psk@TroisD@PortionSpherePHI\space def
- /PhiCercle \psk@TroisD@PhiCercle\space def
- /ThetaMeridien \psk@TroisD@ThetaMeridien\space def
- /Dobs \psk@TroisD@Dobs\space def
- /DScreen \psk@TroisD@Ecran\space def
- /Sin1 THETA sin def
- /Sin2 PHI sin def
- /Cos1 THETA cos def
- /Cos2 PHI cos def
- /Cos1Sin2 Cos1 Sin2 mul def
- /Sin1Sin2 Sin1 Sin2 mul def
- /Cos1Cos2 Cos1 Cos2 mul def
- /Sin1Cos2 Sin1 Cos2 mul def
- /XpointVue Dobs Cos1Cos2 mul def
- /YpointVue Dobs Sin1Cos2 mul def
- /ZpointVue Dobs Sin2 mul def
- /M11 RotZ cos RotY cos mul def
- /M12 RotZ cos RotY sin mul RotX sin mul
- RotZ sin RotX cos mul sub def
- /M13 RotZ cos RotY sin mul RotX cos mul
- RotZ sin RotX sin mul add def
- /M21 RotZ sin RotY cos mul def
- /M22 RotZ sin RotY sin RotX sin mul mul
- RotZ cos RotX cos mul add def
- /M23 RotZ sin RotY sin mul RotX cos mul
- RotZ cos RotX sin mul sub def
- /M31 RotY sin neg def
- /M32 RotX sin RotY cos mul def
- /M33 RotX cos RotY cos mul def
- }%
-% hv 2003-12-20
-% -------------- Utilities -----------------
-\SpecialCoor
-\pstheader{pst-vue3d.pro}
-
-\def\face{%
- \pscurve(1;160)(0.8;180)(1;200)
- \pscustom{\gsave\psarc(0,0){1}{165}{195}
- \pscurve(1;195)(0.85;180)(1;165)
- \fill[fillstyle=solid,fillcolor=blue]\grestore}
- \pscurve[linewidth=.4pt](1;195)(0.85;180)(1;165)
- \bgroup
- \psset{linewidth=2pt}
- \psarc(0,1){1}{180}{270}
- \psarc(0,-1){1}{90}{180}
- \egroup
- \psarc(0,0){1}{150}{210}
- \psset{linewidth=4pt,linecolor=gray}%
- \pscurve(-.5,3.5)(-1,3)(-1.2,2.5)(-1.3,2)(-1.4,1)(-1.35,0.5)%
- (-1.2,-.2)(-1.35,-.5)(-1.4,-1)(-1.5,-1.5)(-1.8,-2)(-1.8,-2.3)%
- (-1.65,-2.5)(-1.35,-2.55)(-.95,-2.8)(-.95,-3.35)(-1,-3.65)(-.8,-4)(-.4,-4.1)
- \pscurve(-.8,-4)(-.8,-4.2)(-.5,-4.5)(-.4,-5)(-.25,-5.5)(0,-5.8)(.5,-6)%
-}
-\def\eye{%
- \psarc[linewidth=2pt](0,2.5){2.5}{215}{270}%
- \psarc[linewidth=2pt](0,-2.5){2.5}{90}{140}%
- \psarc(-2.5,0){1}{-30}{30}%
- \psarc(0,0){1.75}{160}{200}
- \psclip{\pscircle[linestyle=none](0,0){1.75}}
- \pscircle[fillstyle=solid,fillcolor=lightgray](-2.5,0){0.9}
- \endpsclip%
-}
-%
-% -------------- Basic Macros --------------
-%
-% hv 2003
-\def\AxesThreeD{\pst@object{AxesThreeD}}
-\def\AxesThreeD@i{\@ifnextchar({\AxesThreeD@iii}{\AxesThreeD@ii}}
-\def\AxesThreeD@ii#1(#2){%
- \begingroup
- \addto@par{arrows=#1}%
- \begin@OpenObj
- \AxesThreeD@iv#2,@comma*\relax%
-}
-\def\AxesThreeD@iii(#1){%
- \begingroup
- \begin@OpenObj
- \AxesThreeD@iv#1,@comma*\relax%
-}
-%
-\def\AxesThreeD@iv#1,#2*{%
- \def\@tempa{#2}\def\@tempb{@comma}%
- \ifx\@tempa\@tempb% only one value
- \AxesThreeD@v#1,#2\else\AxesThreeD@vi#1,#2\relax%
- \fi%
-}
-\def\AxesThreeD@v#1,#2\relax{%
- \AxesThreeD@vi#1,#1,#1,#1\relax%
-}
-\def\AxesThreeD@vi#1,#2,#3,#4\relax{%
- \use@par
- \pNodeThreeD(0,0,0){Origin}%
- \pNodeThreeD(0,0,#3){ZMax}\pNodeThreeD(#1,0,0){XMax}\pNodeThreeD(0,#2,0){YMax}%
- \psline(Origin)(ZMax)\psline(Origin)(XMax)\psline(Origin)(YMax)%
- \uput[0](ZMax){\small Z}\uput[90](XMax){\small X}\uput[0](YMax){\small Y}%
- \end@OpenObj
- \endgroup
-}
-%
-% hv 2003
-\def\showCoorThreeD{\pst@object{showCoorThreeD}}
-\def\showCoorThreeD@i(#1){{%
- \begin@OpenObj
- \showCoorThreeD@ii#1,@comma*\relax
- \end@OpenObj
- }\ignorespaces%
-}
-\def\showCoorThreeD@ii#1,#2*{%
- \def\@tempa{#2}\def\@tempb{@comma}%
- \ifx\@tempa\@tempb%
- \showCoorThreeD@iii#1;#2\else\showCoorThreeD@iv#1,#2\relax%
- \fi%
-}
-%
-\def\showCoorThreeD@iii#1;#2;#3;#4\relax{%
- \psline(!
- \variablesTroisD
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /Zcote Radius latitude sin mul def
- /Xabscisse Radius longitude cos mul latitude cos mul def
- /Yordonnee Radius longitude sin mul latitude cos mul def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)(!
- /Zcote 0 def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)
- \psline(!
- /Zcote 0 def
- /Xabscisse Radius longitude cos mul latitude cos mul def
- /Yordonnee Radius longitude sin mul latitude cos mul def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)(!
- /Zcote 0 def
- /Yordonnee 0 def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)
- \psline(!
- /Zcote 0 def
- /Xabscisse Radius longitude cos mul latitude cos mul def
- /Yordonnee Radius longitude sin mul latitude cos mul def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)(!
- /Zcote 0 def
- /Xabscisse 0 def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end)
-}
-%
-\def\showCoorThreeD@iv#1,#2,#3,#4\relax{%
-% \qdisk(P){1pt}
- \LineThreeD(#1,#2,#3)(#1,#2,0)%
- \LineThreeD(#1,#2,0)(#1,0,0)%
- \LineThreeD(#1,#2,0)(0,#2,0)%
-}
-%
-%
-\def\CubeThreeD{\def\pst@par{}\pst@object{CubeThreeD}}
-\def\CubeThreeD@i(#1,#2,#3){{
- \begin@ClosedObj
-% \use@par
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- \ifPst@CubeInside /Condition { ge } def \else /Condition { le } def \fi
- /CubeColorFaceOne {\psk@TroisD@CubeColorFaceOne} def
- /CubeColorFaceTwo {\psk@TroisD@CubeColorFaceTwo} def
- /CubeColorFaceThree {\psk@TroisD@CubeColorFaceThree} def
- /CubeColorFaceFive {\psk@TroisD@CubeColorFaceFive} def
- /CubeColorFaceFour {\psk@TroisD@CubeColorFaceFour} def
- /CubeColorFaceSix {\psk@TroisD@CubeColorFaceSix} def
- tx@3DDict begin
- /Condition1 { PS1 0 le } def
- Cube
- end
- }% fin du code ps
- \end@ClosedObj%
-}}
-%
-\def\DieThreeD{\pst@object{DieThreeD}}
-\def\DieThreeD@i(#1,#2,#3){{%
-% (#2,#3,#4) coordonnées du centre
- \begin@ClosedObj
- \use@par
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- \ifPst@CubeInside /Condition { ge } def \else /Condition {le } def \fi
- /CubeColorFaceOne {\psk@TroisD@CubeColorFaceOne} def
- /CubeColorFaceTwo {\psk@TroisD@CubeColorFaceTwo} def
- /CubeColorFaceThree {\psk@TroisD@CubeColorFaceThree} def
- /CubeColorFaceFive {\psk@TroisD@CubeColorFaceFive} def
- /CubeColorFaceFour {\psk@TroisD@CubeColorFaceFour} def
- /CubeColorFaceSix {\psk@TroisD@CubeColorFaceSix} def
- tx@3DDict begin
- Cube
- PointsDie
- end
- }% fin du code ps
- \end@ClosedObj%
-}}
-%
-% Dodecahedron : 31 décembre 2003 ml
-\def\DodecahedronThreeD{\pst@object{DodecahedronThreeD}}
-\def\DodecahedronThreeD@i(#1,#2,#3){{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- /Condition {le } def
- tx@3DDict begin
- Dodecahedron
- end
- }% fin du code ps
- \end@ClosedObj%
-}}
-%
-\def\SphereThreeD{\pst@object{SphereThreeD}}
-\def\SphereThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordonnées du centre
-% #5 rayon
- \begin@ClosedObj%
- \use@par
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- /increment 10 def
- tx@3DDict begin
- /condition { PSfacette 0 le } def
- /departPhi -90 def
- MaillageSphere
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj%
-}\ignorespaces}
-% % fin de la commande PSTricks
-%
-% 2décembre 2002
-%
-\def\SphereInverseThreeD{\pst@object{SphereInverseThreeD}}
-\def\SphereInverseThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordonnées du centre
-% #5 rayon
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- /increment 10 def
- tx@3DDict begin
- /condition {PSfacette 0 ge} def
- /departPhi -90 def
- MaillageSphere
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj%
-}\ignorespaces}
-% % fin de la commande PSTricks
-% fin 2 décembre 2002
-%
-\def\SphereCercleThreeD{\pst@object{SphereCercleThreeD}}
-\def\SphereCercleThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordonnées du centre
-% #5 rayon
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- tx@3DDict begin
- 0 2 360 {
- /ThetaEquateur exch def
- /Xpoint Rsphere ThetaEquateur cos mul PhiCercle cos mul def
- /Ypoint Rsphere ThetaEquateur sin mul PhiCercle cos mul def
- /Zpoint Rsphere PhiCercle sin mul def
- CalculsPointsAfterTransformations
-% rayon de las sphère (normale)
- /nXfacette Xabscisse CX sub def
- /nYfacette Yordonnee CY sub def
- /nZfacette Zcote CZ sub def
-% rayon vers point de vue
- /RXvue Xabscisse XpointVue sub def
- /RYvue Yordonnee YpointVue sub def
- /RZvue Zcote ZpointVue sub def
-% test de visibilité
- /PSPoint RXvue nXfacette mul
- RYvue nYfacette mul add
- RZvue nZfacette mul add
- def
- PSPoint 0 le {
- newpath
- CalcCoordinates
- 0.5 0 360 arc
- closepath
- fill
- } if
-%lineto
- } for
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj%
-}\ignorespaces}
-%
-%
-\def\SphereMeridienThreeD{\pst@object{SphereMeridienThreeD}}
-\def\SphereMeridienThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordonnées du centre
-% #5 rayon
- \begin@ClosedObj%
- \use@par
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- tx@3DDict begin
- 0 2 360 {
- /PhiCercle exch def
- /Xpoint Rsphere ThetaMeridien cos mul PhiCercle cos mul def
- /Ypoint Rsphere ThetaMeridien sin mul PhiCercle cos mul def
- /Zpoint Rsphere PhiCercle sin mul def
- CalculsPointsAfterTransformations
-% rayon de las sphère (normale)
- /nXfacette Xabscisse CX sub def
- /nYfacette Yordonnee CY sub def
- /nZfacette Zcote CZ sub def
-% rayon vers point de vue
- /RXvue Xabscisse XpointVue sub def
- /RYvue Yordonnee YpointVue sub def
- /RZvue Zcote ZpointVue sub def
-% test de visibilité
- /PSPoint RXvue nXfacette mul
- RYvue nYfacette mul add
- RZvue nZfacette mul add
- def
- PSPoint 0 le{
- newpath
- CalcCoordinates
- 0.5 0 360 arc
- closepath
- fill
- } if
- %lineto
- } for
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj%
-}\ignorespaces}
-%
-\def\CylindreThreeD{\pst@object{CylindreThreeD}}
-\def\CylindreThreeD@i(#1,#2,#3)#4#5{{%
-% Le centre de la base sera placé avec
-% (#2,#3,#4) les paramètres CX,CY et CZ
-% #5 rayon
-% #6 hauteur
-% on peut ensuite faire tourner le cylindre
-% avec RotX, RotY et RotZ
- \begin@ClosedObj
- \use@par
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rcylindre #4 def
- /Hcylindre #5 def
- /incrementANGLE 10 def
- /incrementHAUTEUR Hcylindre 5 div def
- tx@3DDict begin
- CylinderThreeD
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj
-}\ignorespaces}% % fin de la commande PSTricks
-%
-% hv 2003-12-18
-\def\LineThreeD{\pst@object{LineThreeD}}
-\def\LineThreeD@i(#1,#2,#3)(#4,#5,#6){{%
-% (#2,#3,#4) coordonnées du point1
-% (#5,#6,#7) coordonnées du point2
- \begin@OpenObj
- \pNodeThreeD(#1,#2,#3){tempNodeA}
- \pNodeThreeD(#4,#5,#6){tempNodeB}
- \psline(tempNodeA)(tempNodeB)
- \end@OpenObj
-}\ignorespaces}
-%
-% hv 2003-12-17
-\def\pNodeThreeD{\pst@object{pNodeThreeD}}
-% point can be in cartesian (x,y,z) or sphere coordinates (r;phi;theta)
-\def\pNodeThreeD@i(#1)#2{{%
- \begin@ClosedObj
- \edef\@NodeNameThreeD{#2}
- \pNodeThreeD@ii#1,@comma*\relax
- \end@ClosedObj
- }\ignorespaces%
-}
-\def\pNodeThreeD@ii#1,#2*{%
- \def\@tempa{#2}\def\@tempb{@comma}%
- \ifx\@tempa\@tempb%
- \pNodeThreeD@iii#1;#2\else\pNodeThreeD@iv#1,#2\relax%
- \fi%
-}
-\def\pNodeThreeD@iii#1;#2;#3;#4\relax{%
- \pnode(!
- \variablesTroisD
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /Zcote Radius latitude sin mul def
- /Xabscisse Radius longitude cos mul latitude cos mul def
- /Yordonnee Radius longitude sin mul latitude cos mul def
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end){\@NodeNameThreeD}
-}
-\def\pNodeThreeD@iv#1,#2,#3,#4\relax{%
- \pnode(!
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /Zcote Radius latitude sin mul def
- /Xabscisse Radius longitude cos mul latitude cos mul def
- /Yordonnee Radius longitude sin mul latitude cos mul def
- \else
- /Zcote #3 def
- /Xabscisse #1 def
- /Yordonnee #2 def
- \fi
- tx@3DDict begin
- formulesTroisD
- Xi reduction mul Yi reduction mul
- end){\@NodeNameThreeD}%
-}
-%
-
-\iffalse
-% hv 2005-12-04
-\def\pnodeThreeD{\pst@object{pnodeThreeD}}
-\def\pnodeThreeD@i(#1,#2,#3)#4{%
- \pst@killglue
- \begingroup
- \use@par
- \pnode(!
- \psk@embedangle
- \psk@viewpoint
- \psk@viewangle
- \tx@SetMatrixThreeD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- Radius longitude cos mul latitude cos mul % x
- Radius longitude sin mul latitude cos mul % y
- Radius latitude sin mul % z
- \else
- #1 #2 #3
- \fi
- \tx@ProjThreeD){#4}%
- \endgroup}
-%
-\let\pNodeThreeD\pnodeThreeD
-\fi
-%
-\def\TetraedreThreeD{\pst@object{TetraedreThreeD}}
-\def\TetraedreThreeD@i(#1,#2,#3){{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- tx@3DDict begin
- Tetraedre
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-%
-% pyramide
-%
-\def\FaceSAB{\pst@object{FaceSAB}}
-\def\FaceSAB@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSAB 0 le { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XS 1 fracHeight sub XA XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YA YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- moveto
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- lineto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XB XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YB YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-\def\FaceSBC{\pst@object{FaceSBC}}
-\def\FaceSBC@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSBC 0 le { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XS 1 fracHeight sub XB XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YB YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- moveto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XC XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YC YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-%
-\def\FaceSCD{\pst@object{FaceSCD}}
-\def\FaceSCD@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSCD 0 le { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XS 1 fracHeight sub XC XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YC YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- moveto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XD XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YD YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-\def\FaceSDA{\pst@object{FaceSDA}}
-\def\FaceSDA@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSDA 0 le { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XS 1 fracHeight sub XD XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YD YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- moveto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XA XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YA YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-\def\FaceABCD{\pst@object{FaceABCD}}
-\def\FaceABCD@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSABCD 0 le { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XA def
- /Yordonnee YA def
- /Zcote ZA def
- CalcCoordinates
- moveto
- /Xabscisse XB def
- /Yordonnee YB def
- /Zcote ZB def
- CalcCoordinates
- lineto
- /Xabscisse XC def
- /Yordonnee YC def
- /Zcote ZC def
- CalcCoordinates
- lineto
- /Xabscisse XD def
- /Yordonnee YD def
- /Zcote ZD def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-% hv 2003
-\def\FaceABCDTop{\pst@object{FaceABCDTop}}
-\def\FaceABCDTop@i(#1,#2,#3)#4{{%
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Hpyramide #4 def
- tx@3DDict begin
- SommetsPyramide
- PSABCD 0 gt { %
- reduction reduction scale
- newpath
- 1 setlinejoin
- /Xabscisse XS 1 fracHeight sub XD XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YD YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- moveto
- /Xabscisse XS 1 fracHeight sub XA XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YA YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XB XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YB YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- /Xabscisse XS 1 fracHeight sub XC XS sub mul add def
- /Yordonnee YS 1 fracHeight sub YC YS sub mul add def
- /Zcote ZS CZ sub fracHeight mul CZ add def
- CalcCoordinates
- lineto
- closepath
- } if
- end
- }% fin du code ps
- \end@ClosedObj
-}\ignorespaces}
-%
-\def\PyramideThreeD{\@ifnextchar[{\PyramideThreeD@i}{\PyramideThreeD@i[]}}
-% (#2,#3,#4) the coordinates of the origin
-% #5 the height of the pyrimide
-\def\PyramideThreeD@i[#1](#2,#3,#4)#5{{%
- \FaceSAB[fillcolor=\psk@TroisD@TetraedreColorFaceA,#1](#2,#3,#4){#5}%
- \FaceSBC[fillcolor=\psk@TroisD@TetraedreColorFaceB,#1](#2,#3,#4){#5}%
- \FaceSCD[fillcolor=\psk@TroisD@TetraedreColorFaceC,#1](#2,#3,#4){#5}%
- \FaceSDA[fillcolor=\psk@TroisD@TetraedreColorFaceD,#1](#2,#3,#4){#5}%
- \FaceABCD[fillcolor=\psk@TroisD@TetraedreColorFaceE,#1](#2,#3,#4){#5}%
- \FaceABCDTop[fillcolor=\psk@TroisD@TetraedreColorFaceE,#1](#2,#3,#4){#5}%
-}\ignorespaces}
-%
-%
-\def\ConeThreeD{\pst@object{ConeThreeD}}
-\def\ConeThreeD@i(#1,#2,#3)#4#5{%
-% Le centre de la base sera placé avec
-% (#2,#3,#4) les paramètres CX,CY et CZ
-% #5 rayon
-% #6 hauteur
-% on peut ensuite faire tourner le cylindre
-% avec RotX, RotY et RotZ
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rcone #4 def
- /Hcone #5 def
- tx@3DDict begin
- ConeThreeD
- end
- }% fin du code ps
- \showpointsfalse
- \end@ClosedObj
-\ignorespaces}%
-%
-\def\CircleThreeD{\pst@object{CircleThreeD}}
-\def\CircleThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) les paramètres CX,CY et CZ
-% #5 rayon du cercle
- \begin@ClosedObj
- \addto@pscode{%
- /Rcercle #4 def
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- tx@3DDict begin
- reduction reduction scale
- /TableauxPoints [
- 0 1 360 {% on décrit le cercle
- /Angle exch def [
- /Xcercle Rcercle Angle cos mul def
- /Ycercle Rcercle Angle sin mul def
- /Xabscisse Xcercle S1 mul Ycercle S2 C1 mul mul add CX add def
- /Yordonnee Xcercle C1 mul neg Ycercle S2 S1 mul mul add CY add def
- /Zcote Ycercle C2 mul neg CZ add def
- CalcCoordinates ]
- } for
- ] def
- TableauxPoints 0 get aload pop moveto
- 0 1 360 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
- end
- }% fin du code ps
- \showpointsfalse
- \end@ClosedObj
-}\ignorespaces}
-%
-%
-\def\FrameThreeD{\pst@object{FrameThreeD}}
-\def\FrameThreeD@i(#1,#2,#3)(#4,#5)(#6,#7){{%
-% (#2,#3,#4) the origin
-% (#5,#6) d'un sommet
-% (#7,#8) du sommet opposé
-% rectangle ABCD
- \begin@ClosedObj
- \addto@pscode{%
- /XA #4 def
- /YA #5 def
- /XC #6 def
- /YC #7 def
-% on en déduit les autres sommets
- /XB XC def
- /YB YA def
- /XD XA def
- /YD YC def
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- tx@3DDict begin
- reduction reduction scale
- newpath
- /Xframe XA def
- /Yframe YA def
- /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def
- /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def
- /Zcote Yframe C2 mul neg CZ add def
- CalcCoordinates
- moveto
- /Xframe XB def
- /Yframe YB def
- /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def
- /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def
- /Zcote Yframe C2 mul neg CZ add def
- CalcCoordinates
- lineto
- /Xframe XC def
- /Yframe YC def
- /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def
- /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def
- /Zcote Yframe C2 mul neg CZ add def
- CalcCoordinates
- lineto
- /Xframe XD def
- /Yframe YD def
- /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def
- /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def
- /Zcote Yframe C2 mul neg CZ add def
- CalcCoordinates
- lineto
- /Xframe XA def
- /Yframe YA def
- /Xabscisse Xframe S1 mul Yframe S2 C1 mul mul add CX add def
- /Yordonnee Xframe C1 mul neg Yframe S2 S1 mul mul add CY add def
- /Zcote Yframe C2 mul neg CZ add def
- CalcCoordinates
- lineto
- closepath
- end
- }% fin du code ps
- \showpointsfalse
- \end@ClosedObj
-}\ignorespaces}% % fin de la commande PSTricks
-%
-%
-\def\QuadrillageThreeD{\pst@object{QuadrillageThreeD}}
-\def\QuadrillageThreeD@i(#1,#2,#3)(#4,#5)(#6,#7){{%
- \begin@OpenObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- /Xmin #4 def
- /Xmax #6 def
- /Ymin #5 def
- /Ymax #7 def
- /pas \psk@TroisD@pas\space def
- /grille \psk@TroisD@grille\space def
- tx@3DDict begin
- reduction reduction scale
- Ymin grille Ymax {% balayage suivant Oy
- /Ygrille exch def
- /TableauxPoints [
- Xmin pas Xmax { % balayage suivant Ox
- /Xgrille exch def
- /Xabscisse Xgrille S1 mul Ygrille S2 C1 mul mul add CX add def
- /Yordonnee Xgrille C1 mul neg Ygrille S2 S1 mul mul add CY add def
- /Zcote Ygrille C2 mul neg CZ add def
- formulesTroisD
- [ Xi 28.45 mul Yi 28.45 mul ]
- } for
- ] def
- TableauxPoints 0 get aload pop moveto
- 0 1 Xmax Xmin sub pas div {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto
- } for
-% stroke
- } for
-%
- Xmin grille Xmax {% balayage suivant Ox
- /Xgrille exch def
- /TableauxPoints [
- Ymin pas Ymax { % balayage suivant Ox
- /Ygrille exch def
- /Xabscisse Xgrille S1 mul Ygrille S2 C1 mul mul add CX add def
- /Yordonnee Xgrille C1 mul neg Ygrille S2 S1 mul mul add CY add def
- /Zcote Ygrille C2 mul neg CZ add def
- formulesTroisD
- [ Xi 28.45 mul Yi 28.45 mul ]
- } for
- ] def
- TableauxPoints 0 get aload pop moveto
- 0 1 Ymax Ymin sub pas div {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto
- } for
- \pst@number\pslinewidth SLW
- \pst@usecolor\pslinecolor
- \@nameuse{psls@\pslinestyle}
-% stroke
- } for
-% fin du tracé
- end
- }% fin du code ps
- \end@OpenObj
-}\ignorespaces}% % fin de la commande PSTricks
-%
-\newif\ifPstThreeDplot@showInside
-\define@key[psset]{pst-vue3d}{showInside}[true]{\@nameuse{PstThreeDplot@showInside@#1}}
-\define@key[psset]{pst-vue3d}{SegmentColor}{\pst@getcolor{#1}\psk@ThreeDplot@SegmentColor}
-\define@key[psset]{pst-vue3d}{increment}{\pst@getint{#1}\psk@ThreeDplot@increment}
-\psset[pst-vue3d]{showInside,SegmentColor={[cmyk]{0.2,0.6,1,0}},increment=10}
-%
-\def\ParaboloidThreeD{\pst@object{ParaboloidThreeD}}
-\def\ParaboloidThreeD@i#1#2{%
-\begin@SpecialObj%
-\addto@pscode{%
- \psk@embedangle
- \psk@viewpoint
- \psk@viewangle
- \tx@SetMatrixThreeD
-% Vecteur ViewPoint
- \psk@viewpoint
- /vZ ED
- /vY ED
- /vX ED
- /increment \psk@ThreeDplot@increment\space def
- /height #1 def
- /radius #2 #1 sqrt div def
- /cmyk {} def
- 1 setlinejoin
- % les rayons de lumière
- /xLight 1 def
- /yLight 0.1 def
- /zLight 0.2 def
- % précision du tracé
- /pas 0.5 def
- /pas10 {pas 10 div} bind def
-%
- /NormeLight {xLight dup mul yLight dup mul zLight dup mul add add sqrt} bind def
-% l'ellipse du plan de coupe : le contour
- /calculate2DPoint { % four values on stack; x2D y2D are returned
- /V0 ED /Z0 ED /U20 ED /U10 ED
- U10 cos V0 mul radius mul \pst@number\psunit mul
- U20 sin V0 mul radius mul \pst@number\psunit mul
- Z0 \pst@number\psunit mul \tx@ProjThreeD
- } def
- /PlanCoupe {
- /Z height store
- /V {Z sqrt} bind def
- /TableauxPoints [
- 0 1 359 {
- /U exch def [ U U Z V caclculate2DPoint ] % on décrit le cercle
- } for
- ] def
- newpath
- TableauxPoints 0 get aload pop moveto
- 0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
- closepath
- } def
-%
- /facette {
- newpath
- U U Z V calculate2DPoint moveto
- U 1 U increment add {%
- /U1 exch def
- U1 U1 Z V calculate2DPoint lineto
- } for
- Z pas10 Z pas add pas10 add{
- /Z1 exch def
- /V {Z1 sqrt} bind def
- U1 U1 Z1 V calculate2DPoint lineto
- } for
- U increment add -1 U {%
- /U2 exch def
- U2 U2 Z pas add V calculate2DPoint lineto
- } for
- Z pas add pas10 sub pas10 neg Z pas10 sub{
- /Z2 exch def
- /V {Z2 abs sqrt} bind def
- U U Z2 V calculate2DPoint lineto
- } for
- closepath
- } def % facette
-%
- /MaillageParaboloid {
- 0 pas height pas sub{%
- /Z ED
- /V {Z sqrt} bind def
- 0 increment 360 increment sub {%
- /U exch def
-% Centre de la facette
- /Ucentre {U increment 2 div add} bind def
- /Vcentre {Z pas 2 div add sqrt} bind def
-% normale à la facette
- /nXfacette {2 Vcentre dup mul mul Ucentre cos mul radius mul} bind def
- /nYfacette {2 Vcentre dup mul mul Ucentre sin mul radius mul} bind def
- /nZfacette {Vcentre neg radius dup mul mul} bind def
- /NormeN {
- nXfacette dup mul
- nYfacette dup mul
- nZfacette dup mul
- add add sqrt} bind def
- NormeN 0 eq {/NormeN 1e-10 def} if
-% test de visibilité
- /PSfacette vX nXfacette mul
- vY nYfacette mul add
- vZ nZfacette mul add def
- condition {
- facette
- /cosV {1 xLight nXfacette mul
- yLight nYfacette mul
- zLight nZfacette mul
- add add
- NormeLight
- NormeN mul div sub} bind def
- \psk@ThreeDplot@SegmentColor\space
- cosV mul 4 1 roll cosV mul 4 1 roll cosV dup mul mul 4 1 roll cosV dup mul mul 4 1 roll
- setcmykcolor fill
- 0 setgray
- facette
- stroke
- } if
- } for
- } for
- } def
- /conditionGE {PSfacette 0 ge} def
- /conditionLE {PSfacette 0 le} def
- \ifPstThreeDplot@showInside
- /condition {conditionGE} def
- MaillageParaboloid
- vZ 0 ge {%
- PlanCoupe 1 0.5 0.5 setrgbcolor fill
- PlanCoupe 0 setgray stroke} if
- \else
- /condition {conditionLE} def
- MaillageParaboloid
- /condition {conditionGE} def
- MaillageParaboloid%
- \fi
-}
-% fin du code ps
-\showpointsfalse
-\end@SpecialObj}
-%
-%
-% 11 novembre
-\def\DemiSphereThreeD{\pst@object{DemiSphereThreeD}}
-\def\DemiSphereThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordinates of the center
-% #5 rayon
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- /increment 10 def
- tx@3DDict begin
- /condition { PSfacette 0 le } def
- /departPhi 0 def
- MaillageSphere
-% centre de la base inférieure après transformations
- /CxFaceInf CX def
- /CyFaceInf CY def
- /CzFaceInf CZ def
-% correction 16 novembre 2002
-% /Xpoint CxFaceInf def
-% /Ypoint CyFaceInf def
-% /Zpoint CzFaceInf def
- /Xpoint 0 def
- /Ypoint 0 def
- /Zpoint 0 def
-% fin correction 16/11/2002
- CalculsPointsAfterTransformations
- /CxBaseInf Xabscisse def
- /CyBaseInf Yordonnee def
- /CzBaseInf Zcote def
- /RXvueInf CxBaseInf XpointVue sub def
- /RYvueInf CyBaseInf YpointVue sub def
- /RZvueInf CzBaseInf ZpointVue sub def
-% Sommet de la sphère
- /Xpoint 0 def
- /Ypoint 0 def
- /Zpoint Rsphere def
- CalculsPointsAfterTransformations
- /XsommetSphere Xabscisse def
- /YsommetSphere Yordonnee def
- /ZsommetSphere Zcote def
-% Normale extérieure à la base inférieure
- /nXBaseInf CxFaceInf XsommetSphere sub def
- /nYBaseInf CyFaceInf YsommetSphere sub def
- /nZBaseInf CzFaceInf ZsommetSphere sub def
-% Visibilité de la base inférieure
- /PSbaseSphere nXBaseInf RXvueInf mul
- nYBaseInf RYvueInf mul add
- nZBaseInf RZvueInf mul add def
- PSbaseSphere 0 le {
- /TableauxPoints [
- 0 1 359 {% on décrit le cercle
- /theta exch def [
- /Xpoint Rsphere theta cos mul def
- /Ypoint Rsphere theta sin mul def
- /Zpoint 0 def
- CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
- gsave
- newpath
- TableauxPoints 0 get aload pop moveto
- 0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto
- } for
- 0.7 setgray
- closepath
- fill
- grestore
- } if
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj
-}\ignorespaces}% % fin de la commande PSTricks
-%
-%
-\def\SphereCreuseThreeD{\pst@object{SphereCreuseThreeD}}
-\def\SphereCreuseThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordinates of the center
-% #5 rayon
- \begin@ClosedObj
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- /increment 10 def
- tx@3DDict begin
- /SphereInside {
- /condition {PSfacette 0 ge} def
- /departPhi 0 def
- MaillageSphere
- } def
-%% centre de la base inférieure après transformations
- /CxFaceInf CX def
- /CyFaceInf CY def
- /CzFaceInf CZ def
- /Xpoint CxFaceInf def
- /Ypoint CyFaceInf def
- /Zpoint CzFaceInf def
- CalculsPointsAfterTransformations
- /CxBaseInf Xabscisse def
- /CyBaseInf Yordonnee def
- /CzBaseInf Zcote def
- /RXvueInf CxBaseInf XpointVue sub def
- /RYvueInf CyBaseInf YpointVue sub def
- /RZvueInf CzBaseInf ZpointVue sub def
-% Sommet de la sphère
- /Xpoint 0 def
- /Ypoint 0 def
- /Zpoint Rsphere def
- CalculsPointsAfterTransformations
- /XsommetSphere Xabscisse def
- /YsommetSphere Yordonnee def
- /ZsommetSphere Zcote def
-% Normale extérieure à la base inférieure
- /nXBaseInf CxFaceInf XsommetSphere sub def
- /nYBaseInf CyFaceInf YsommetSphere sub def
- /nZBaseInf CzFaceInf ZsommetSphere sub def
-% Visibilité de la base inférieure
- /PSbaseSphere nXBaseInf RXvueInf mul nYBaseInf RYvueInf mul add
- nZBaseInf RZvueInf mul add def
- /base {
- /TableauxPoints [
- 0 1 359 {% on décrit le cercle
- /theta exch def [
- /Xpoint Rsphere theta cos mul def
- /Ypoint Rsphere theta sin mul def
- /Zpoint 0 def
- CalculsPointsAfterTransformations
- CalcCoordinates ]
- } for
- ] def
-% gsave
- newpath
- TableauxPoints 0 get aload pop moveto
- 0 1 359 {
- /compteur exch def
- TableauxPoints compteur get aload pop
- lineto } for
- 0.7 setgray
- closepath
-% stroke
-%grestore
- } def
- PSbaseSphere 0 le {
- base
- clip
- SphereInside
- }{ 0 0 0.01 0 360 arc } ifelse
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj
-}\ignorespaces}% % fin de la commande PSTricks
-%
-% 30 novembre 2002
-% révisé le 30 octobre 2003
-\def\PortionSphereThreeD{\pst@object{PortionSphereThreeD}}
-\def\PortionSphereThreeD@i(#1,#2,#3)#4{{%
-% (#2,#3,#4) coordinates of the center
-% #5 rayon
- \begin@ClosedObj%
- \addto@pscode{%
- \variablesTroisD
- \ifPst@SphericalCoor
- /Radius #1 def
- /longitude #2 def
- /latitude #3 def
- /CZ Radius latitude sin mul def
- /CX Radius longitude cos mul latitude cos mul def
- /CY Radius longitude sin mul latitude cos mul def
- \else
- /CX #1 def
- /CY #2 def
- /CZ #3 def
- \fi
- reduction reduction scale
- /Rsphere #4 def
- /increment 1 def
-% /increment 2.5 def
- tx@3DDict begin
- PortionSphere
- end
- }% fin du code ps
- \showpointsfalse%
- \end@ClosedObj%
-}\ignorespaces}% % fin de la commande PSTricks
-%
-\catcode`\@=\PstAtCode\relax
-%
-%% END: pst-vue3D.tex
-\endinput
-