summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/Asia3d.pdfbin0 -> 1235392 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/Asia3d.tex19
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/China3d.pdfbin0 -> 497952 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/China3d.tex25
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/Europe3d.pdfbin0 -> 549379 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/Europe3d.tex25
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.pdfbin0 -> 999587 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.tex38
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/data.tgzbin1510037 -> 2623595 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-geo/pst-map3d-doc.pdfbin0 -> 14664961 bytes
-rw-r--r--Master/texmf-dist/dvips/pst-geo/pst-map3d.pro729
-rw-r--r--Master/texmf-dist/tex/generic/pst-geo/pst-map3d-doc.tex525
-rw-r--r--Master/texmf-dist/tex/generic/pst-geo/pst-map3d.tex765
-rw-r--r--Master/texmf-dist/tex/latex/pst-geo/pst-map3d.sty6
14 files changed, 2053 insertions, 79 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-geo/Asia3d.pdf b/Master/texmf-dist/doc/generic/pst-geo/Asia3d.pdf
new file mode 100644
index 00000000000..f0c054190fd
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/Asia3d.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-geo/Asia3d.tex b/Master/texmf-dist/doc/generic/pst-geo/Asia3d.tex
new file mode 100644
index 00000000000..3eae5789850
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/Asia3d.tex
@@ -0,0 +1,19 @@
+\documentclass[12pt,a4paper]{article} % <voss _ at _ perce.de>
+\usepackage{pst-map3d}
+\topmargin=-0.75in
+\begin{document}
+\section*{Asia}
+\begin{verbatim}
+\begin{pspicture*}(-7,-6.5)(7,6.5)%
+ \psset{path=../data,linewidth=0.1pt}
+ \WorldMapThreeD[PHI=40,THETA=100,rivers=false]
+\end{pspicture*}
+\end{verbatim}
+
+\makebox[\textwidth]{\psframebox{%
+\begin{pspicture*}(-7,-6.5)(7,6.5)%
+ \psset{path=../data,linewidth=0.1pt}
+ \WorldMapThreeD[PHI=40,THETA=100,rivers=false]
+\end{pspicture*}}}%
+\end{document}
+
diff --git a/Master/texmf-dist/doc/generic/pst-geo/China3d.pdf b/Master/texmf-dist/doc/generic/pst-geo/China3d.pdf
new file mode 100644
index 00000000000..c5dffe21849
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/China3d.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-geo/China3d.tex b/Master/texmf-dist/doc/generic/pst-geo/China3d.tex
new file mode 100644
index 00000000000..0dfe7061727
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/China3d.tex
@@ -0,0 +1,25 @@
+\documentclass[12pt,a4paper]{article} % <voss@perce.de>
+\usepackage{pstricks}
+\usepackage{pst-map3d}
+\topmargin=-0.75in
+\pagestyle{empty}
+\begin{document}
+\section*{China}
+\begin{verbatim}
+\psset{unit=1,path=../data}
+\begin{pspicture*}(-7,-6.5)(7,6.5)%
+\psset{unit=2}
+ \WorldMapThreeD[PHI=35,THETA=100,rivers=false]
+\end{pspicture*}
+\end{verbatim}
+
+\begin{center}
+\psset{path=../data}
+\begin{pspicture*}(-7,-6.5)(7,6.5)%
+\psset{unit=2}
+ \WorldMapThreeD[PHI=35,THETA=100,rivers=false]
+\end{pspicture*}
+\end{center}
+
+\end{document}
+
diff --git a/Master/texmf-dist/doc/generic/pst-geo/Europe3d.pdf b/Master/texmf-dist/doc/generic/pst-geo/Europe3d.pdf
new file mode 100644
index 00000000000..38f6cf80f10
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/Europe3d.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-geo/Europe3d.tex b/Master/texmf-dist/doc/generic/pst-geo/Europe3d.tex
new file mode 100644
index 00000000000..12e3a89b37e
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/Europe3d.tex
@@ -0,0 +1,25 @@
+\documentclass[12pt,a4paper]{article} % <voss@perce.de>
+\usepackage{pstricks}
+\usepackage{pst-map3d}
+\definecolor{ocean}{rgb}{0.5,0.8,0.8}
+\topmargin=-0.75in
+\begin{document}
+\section*{Europe}
+\begin{verbatim}
+\psset{unit=2.75,path=../data}
+\psframebox{%
+\begin{pspicture*}(-1.5,-1.6)(3.25,4)%
+ \WorldMapThreeD[rivers=false]
+\end{pspicture*}
+}
+\end{verbatim}
+
+\psset{unit=2.75,path=../data}
+\psframebox{%
+\begin{pspicture*}(-1.5,-1.6)(3.25,4)%
+ \WorldMapThreeD[rivers=false]
+\end{pspicture*}
+}
+%
+\end{document}
+
diff --git a/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.pdf b/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.pdf
new file mode 100644
index 00000000000..6a36320b514
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.tex b/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.tex
new file mode 100644
index 00000000000..2b2280cba6e
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/SouthAmerica3d.tex
@@ -0,0 +1,38 @@
+\documentclass[12pt,a4paper]{article} % <voss@perce.de>
+\usepackage{pstricks}
+\usepackage{pst-map3d}
+\topmargin=-0.5in
+\begin{document}
+\section*{Southamerica}
+
+\begin{verbatim}
+\psset{path=../data}
+\psframebox{%
+\begin{pspicture*}(-6.5,-6.5)(6.5,6.5)
+ \WorldMapThreeD[RotZ=-65,RotY=-65]
+\end{pspicture*}}
+
+
+\psframebox{%
+\begin{pspicture*}(-6.5,-6.5)(6.5,6.5)
+ \psset{unit=2}
+ \WorldMapThreeD[RotZ=-65,RotY=-65]
+\end{pspicture*}}
+\end{verbatim}
+
+\psset{path=../data}
+\psframebox{%
+\begin{pspicture*}(-6.5,-6.5)(6.5,6.5)
+ \WorldMapThreeD[RotZ=-65,RotY=-65]
+\end{pspicture*}}
+
+
+\psframebox{%
+\begin{pspicture*}(-6.5,-6.5)(6.5,6.5)
+ \psset{unit=2}
+ \WorldMapThreeD[RotZ=-65,RotY=-65]
+\end{pspicture*}}
+
+
+\end{document}
+
diff --git a/Master/texmf-dist/doc/generic/pst-geo/data.tgz b/Master/texmf-dist/doc/generic/pst-geo/data.tgz
index 8190239c2d1..dc504e54495 100644
--- a/Master/texmf-dist/doc/generic/pst-geo/data.tgz
+++ b/Master/texmf-dist/doc/generic/pst-geo/data.tgz
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-geo/pst-map3d-doc.pdf b/Master/texmf-dist/doc/generic/pst-geo/pst-map3d-doc.pdf
new file mode 100644
index 00000000000..a16633b0c57
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-geo/pst-map3d-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/dvips/pst-geo/pst-map3d.pro b/Master/texmf-dist/dvips/pst-geo/pst-map3d.pro
new file mode 100644
index 00000000000..eb46bfac51e
--- /dev/null
+++ b/Master/texmf-dist/dvips/pst-geo/pst-map3d.pro
@@ -0,0 +1,729 @@
+% premiere version 29 novembre 2003
+% entierement modifiee le 08/02/2008
+% allégée de 3D.pro
+% version 1.0 du 5 mars 2008
+% manuel.luque27@gmail.com
+/tx@map3DDict 100 dict def
+tx@map3DDict begin
+%%
+/CalcCoor{
+ /Y exch def /X exch def
+ /Xpoint Y cos X cos mul Rsphere mul def
+ /Ypoint Y cos X sin mul Rsphere mul def
+ /Zpoint Y sin Rsphere mul def
+ } def
+
+ /CompteurRegions{%
+/regions_visibles [] def
+/compteur 0 def
+{
+ /region exch def
+ /nbr region length def % nombre de points
+ 0 1 nbr 1 sub {
+ /counter exch def % pour mémoriser le premier point vu
+ region counter get aload pop
+ CalcCoor
+ CalculsPointsAfterTransformations
+ Test
+ PS condition {% marque le point
+ /regions_visibles [regions_visibles aload pop compteur ] def
+ exit % termine
+ } if
+ } for
+ /compteur compteur 1 add def
+} forall
+/TableauRegionsVisibles [
+0 1 regions_visibles length 1 sub {
+ /NoRegion exch def
+ /No regions_visibles NoRegion get def
+ REGION No get
+ } for
+] def
+TableauRegionsVisibles
+} def
+
+/CalculsPointsRegion{%
+ /region1 exch def
+ region1 0 get aload pop
+ CalcCoor
+ newpath
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ Test
+ PS condition { moveto }{ 2 mul exch 2 mul exch moveto} ifelse
+%
+ 0 1 region1 length 1 sub {
+ /NoPoint exch def
+ region1 NoPoint get aload pop
+ CalcCoor
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ Test
+ PS condition { lineto }{ 2 mul exch 2 mul exch lineto} ifelse
+ } for
+} def
+
+/MatriceTransformation{%
+ /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
+ } def
+% RotZ -> RotX -> RotY
+/MatriceTransformationZXY{%
+ /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 RotZ sin RotX sin mul RotY sin mul sub def
+ /M12 RotZ sin RotY cos mul RotZ cos RotX sin mul RotY sin mul add def
+ /M13 RotX cos RotY sin mul def
+ /M21 RotZ sin RotX cos mul neg def
+ /M22 RotZ cos RotX cos mul def
+ /M23 RotX sin neg def
+ /M31 RotZ cos neg RotY sin mul RotZ sin RotX sin mul RotY cos mul sub def
+ /M32 RotZ sin neg RotY sin mul RotZ cos RotX sin mul RotY cos mul add def
+ /M33 RotX cos RotY cos mul def
+ } def
+%
+/CalcCoordinates{%
+ formulesTroisD
+ Xi xunit Yi yunit
+ }
+ 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 def
+ /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add def
+ /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add def
+ }
+def
+%
+/Test { % test de visibilité d'un point
+% rayon vers point de vue
+ /RXvue XpointVue Xabscisse sub def
+ /RYvue YpointVue Yordonnee sub def
+ /RZvue ZpointVue Zcote sub def
+% test de visibilité
+ /PS RXvue Xabscisse mul % produit scalaire
+ RYvue Yordonnee mul add
+ RZvue Zcote mul add
+ def
+} def
+%
+/MaillageSphere {
+gsave
+maillagewidth
+maillagecolor
+0.25 setlinewidth
+0 increment 360 increment sub {%
+ /theta exch def
+-90 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 def
+ /nYfacette yCentreFacette def
+ /nZfacette zCentreFacette def
+% rayon vers point de vue
+ /RXvue XpointVue xCentreFacette sub def
+ /RYvue YpointVue yCentreFacette sub def
+ /RZvue ZpointVue zCentreFacette sub def
+% test de visibilité
+ /PSfacette RXvue nXfacette mul
+ RYvue nYfacette mul add
+ RZvue nZfacette mul add
+ def
+PSfacette 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
+stroke
+} def
+%
+/DrawCitys {
+/CITY exch def
+/Rayon exch def
+/nbr CITY length def % nombre de villes
+0 1 nbr 1 sub {
+ /compteur exch def
+ CITY compteur get aload pop
+ /X exch def /Y exch def
+ /Xpoint {%
+ Y cos X cos mul Rsphere mul
+ } def
+ /Ypoint {%
+ Y cos X sin mul Rsphere mul
+ } def
+ /Zpoint { Y sin Rsphere mul } def
+CalculsPointsAfterTransformations
+ CalcCoordinates
+Test
+PS condition %
+ {1 0 0 setrgbcolor newpath Rayon 0 360 arc closepath fill}{pop pop}
+ ifelse
+} for
+} def
+
+/oceans_seas_hatched {
+-90 circlesep 90 {
+ /latitude_parallel exch def
+ Parallel
+ circlecolor
+ circlewidth
+ stroke
+ } for
+ } def
+
+/meridien {
+% liste des points vus
+/TabPointsVusNeg[
+-180 1 0{ % for
+ /phi exch def
+ /Xpoint Rsphere longitude_meridien cos mul phi cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi cos mul def
+ /Zpoint Rsphere phi sin mul def
+CalculsPointsAfterTransformations
+ Test
+ PS condition { phi } if
+ } for
+] def
+%
+/TabPointsVusPos[
+0 1 180{ % for
+ /phi exch def
+ /Xpoint Rsphere longitude_meridien cos mul phi cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi cos mul def
+ /Zpoint Rsphere phi sin mul def
+CalculsPointsAfterTransformations
+ Test
+ PS condition { phi } if
+ } for
+] def
+% plus grand et plus petit
+
+/phi_minNeg 0 def
+/phi_maxNeg -180 def
+
+0 1 TabPointsVusNeg length 1 sub { % for
+ /iPoint exch def
+ /phi TabPointsVusNeg iPoint get def
+ phi phi_minNeg le {/phi_minNeg phi def} if
+ } for
+0 1 TabPointsVusNeg length 1 sub { % for
+ /iPoint exch def
+ /phi TabPointsVusNeg iPoint get def
+ phi phi_maxNeg ge {/phi_maxNeg phi def} if
+ } for
+
+/phi_minPos 180 def
+/phi_maxPos 0 def
+
+0 1 TabPointsVusPos length 1 sub { % for
+ /iPoint exch def
+ /phi TabPointsVusPos iPoint get def
+ phi phi_minPos le {/phi_minPos phi def} if
+ } for
+0 1 TabPointsVusPos length 1 sub { % for
+ /iPoint exch def
+ /phi TabPointsVusPos iPoint get def
+ phi phi_maxPos ge {/phi_maxPos phi def} if
+ } for
+
+ /Xpoint Rsphere longitude_meridien cos mul phi_minNeg cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi_minNeg cos mul def
+ /Zpoint Rsphere phi_minNeg sin mul def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ moveto
+
+phi_minNeg 1 phi_maxNeg{
+ /phi exch def
+ /Xpoint Rsphere longitude_meridien cos mul phi cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi cos mul def
+ /Zpoint Rsphere phi sin mul def
+CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+meridiencolor
+meridienwidth
+stroke
+
+ /Xpoint Rsphere longitude_meridien cos mul phi_minPos cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi_minPos cos mul def
+ /Zpoint Rsphere phi_minPos sin mul def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ moveto
+
+phi_minPos 1 phi_maxPos{
+ /phi exch def
+ /Xpoint Rsphere longitude_meridien cos mul phi cos mul def
+ /Ypoint Rsphere longitude_meridien sin mul phi cos mul def
+ /Zpoint Rsphere phi sin mul def
+CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+meridiencolor
+meridienwidth
+stroke
+}
+def
+
+%% macros de Jean-Paul Vignault
+%% dans solides.pro
+%% produit vectoriel de deux vecteurs 3d
+/vectprod3d { %% x1 y1 z1 x2 y2 z2
+6 dict begin
+ /zp exch def
+ /yp exch def
+ /xp exch def
+ /z exch def
+ /y exch def
+ /x exch def
+ y zp mul z yp mul sub
+ z xp mul x zp mul sub
+ x yp mul y xp mul sub
+end
+} def
+
+% coordonnées sphériques -> coordonnées cartésiennes
+/rtp2xyz {
+6 dict begin
+ /phi exch def
+ /theta exch def
+ /r exch def
+ /x phi cos theta cos mul r mul def
+ /y phi cos theta sin mul r mul def
+ /z phi sin r mul def
+ x y z
+end
+} def
+
+%% norme d'un vecteur 3d
+/norme3d { %% x y z
+3 dict begin
+ /z exch def
+ /y exch def
+ /x exch def
+ x dup mul y dup mul add z dup mul add sqrt
+end
+} def
+
+%% duplique le vecteur 3d
+/dupp3d { %% x y z
+ 3 copy
+} def
+/dupv3d {dupp3d} def
+
+%%%%% ### mulv3d ###
+%% (scalaire)*(vecteur 3d) Attention : dans l autre sens !
+/mulv3d { %% x y z lambda
+4 dict begin
+ /lambda exch def
+ /z exch def
+ /y exch def
+ /x exch def
+ x lambda mul
+ y lambda mul
+ z lambda mul
+end
+} def
+
+%%%%% ### defpoint3d ###
+%% creation du point A a partir de xA yA yB et du nom /A
+/defpoint3d { %% xA yA zA /nom
+1 dict begin
+ /memo exch def
+ [ 4 1 roll ] cvx memo exch
+end def
+}def
+
+%%%%% ### scalprod3d ###
+%% produit scalaire de deux vecteurs 3d
+/scalprod3d { %% x1 y1 z1 x2 y2 z2
+6 dict begin
+ /zp exch def
+ /yp exch def
+ /xp exch def
+ /z exch def
+ /y exch def
+ /x exch def
+ x xp mul y yp mul add z zp mul add
+end
+} def
+
+%%%%% ### addv3d ###
+%% addition de deux vecteurs 3d
+/addv3d { %% x1 y1 z1 x2 y2 z2
+6 dict begin
+ /zp exch def
+ /yp exch def
+ /xp exch def
+ /z exch def
+ /y exch def
+ /x exch def
+ x xp add
+ y yp add
+ z zp add
+end
+} def
+
+/arccos {
+ dup
+ dup mul neg 1 add sqrt
+ exch
+ atan
+} def
+%% fin des macros de Jean-Paul Vignault
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%% ### rotV3d ###
+%% rotation autour d'un vecteur u
+%% defini par (ux,uy,uz)
+%% ici l'axe des pôles de la Terre
+%% d'un angle theta
+/rotV3d {
+15 dict begin
+ /N2uvw ux dup mul uy dup mul add uz dup mul add def
+ /N2uv ux dup mul uy dup mul add def
+ /N2vw uz dup mul uy dup mul add def
+ /N2uw uz dup mul ux dup mul add def
+ /z exch def /y exch def /x exch def
+ /uxvywz ux x mul uy y mul add uz z mul add def
+ /uxvy ux x mul uy y mul add def
+ /uxwz ux x mul uz z mul add def
+ /vywz uy y mul uz z mul add def
+ /_wyvz uz y mul neg uy z mul add def
+ /wx_uz uz x mul ux z mul sub def
+ /_vxuy uy x mul neg ux y mul add def
+ ux uxvywz mul x N2vw mul ux vywz mul sub theta cos mul add N2uvw sqrt _wyvz mul theta sin mul add N2uvw div
+ uy uxvywz mul y N2uw mul uy uxwz mul sub theta cos mul add N2uvw sqrt wx_uz mul theta sin mul add N2uvw div
+ uz uxvywz mul z N2uv mul uz uxvy mul sub theta cos mul add N2uvw sqrt _vxuy mul theta sin mul add N2uvw div
+end
+ } def
+
+
+/the_night{
+50 dict begin
+ /theta {180 hour 15 mul sub} bind def
+% direction des rayons du soleil au solstice d'hiver
+ u1 u2 u3 /u defpoint3d
+% vecteur normal dans le plan meridien
+% la latitude
+% /phi0 u2 neg u3 atan def
+u1 u2 u3 rotV3d
+ /nZ exch def /nY exch def pop
+ /phi0 nY neg nZ atan def
+% vecteur normal dans le plan equateur
+ /theta0 u1 neg u2 atan def
+ theta0 cos theta0 sin 0 /v defpoint3d
+% w tels que le trièdre u v w soit direct
+ u v vectprod3d dupp3d norme3d 1 exch div mulv3d /w defpoint3d
+/TabPointsVusNeg[
+-180 1 0{ % for
+ /t exch def
+ v t cos Rsphere mul mulv3d
+ w t sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ Test
+ PS 0 ge { t } if
+ } for
+] def
+%
+/TabPointsVusPos[
+0 1 180{ % for
+ /t exch def
+ v t cos Rsphere mul mulv3d
+ w t sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ Test
+ PS 0 ge { t } if
+ } for
+] def
+/t_minNeg 0 def
+/t_maxNeg -180 def
+
+0 1 TabPointsVusNeg length 1 sub { % for
+ /iPoint exch def
+ /t TabPointsVusNeg iPoint get def
+ t t_minNeg le {/t_minNeg t def} if
+ } for
+0 1 TabPointsVusNeg length 1 sub { % for
+ /iPoint exch def
+ /t TabPointsVusNeg iPoint get def
+ t t_maxNeg ge {/t_maxNeg t def} if
+ } for
+
+/t_minPos 180 def
+/t_maxPos 0 def
+
+0 1 TabPointsVusPos length 1 sub { % for
+ /iPoint exch def
+ /t TabPointsVusPos iPoint get def
+ t t_minPos le {/t_minPos t def} if
+ } for
+0 1 TabPointsVusPos length 1 sub { % for
+ /iPoint exch def
+ /t TabPointsVusPos iPoint get def
+ t t_maxPos ge {/t_maxPos t def} if
+ } for
+
+theta -90 ge theta 90 le and {
+ v t_minNeg cos Rsphere mul mulv3d
+ w t_minNeg sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ moveto
+
+t_minNeg 1 t_maxPos{
+ /t exch def
+ v t cos Rsphere mul mulv3d
+ w t sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+phi0 1 phi0 180 add { /t exch def
+RsphereScreen t cos mul
+RsphereScreen t sin mul
+ lineto
+ } for
+}{
+ v t_minPos cos Rsphere mul mulv3d
+ w t_minPos sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ moveto
+
+t_minPos 1 t_maxPos {
+ /t exch def
+ v t cos Rsphere mul mulv3d
+ w t sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+t_minNeg 1 t_maxNeg {
+ /t exch def
+ v t cos Rsphere mul mulv3d
+ w t sin Rsphere mul mulv3d
+ addv3d
+ rotV3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+phi0 1 phi0 180 add { /t exch def
+RsphereScreen t cos mul
+RsphereScreen t sin mul
+ lineto
+ } for
+} ifelse
+closepath
+end
+}
+def
+
+% ondes seismes
+/ondes {
+ 50 dict begin
+ /l exch def % latitude : phi
+ /L exch def % longitude : theta
+ /dlmax exch def % intervalle maximal en degrés
+ /nbr exch def % nombre de cercles
+ /dl dlmax nbr div def
+% le vecteur unitaire normal
+% à la sphère au point considéré
+ L cos l cos mul
+ L sin l cos mul
+ l sin
+ /u defpoint3d
+1 1 nbr { /i exch def
+ /l' l dl i mul add def
+ /r Rsphere dl i mul cos mul def
+ /r' Rsphere dl i mul sin mul def
+% le centre de l'onde
+ /x_o r L cos mul l cos mul def
+ /y_o r L sin mul l cos mul def
+ /z_o r l sin mul def
+% un vecteur unitaire du plan du cercle
+% perpendiculaire à n et dans le plan méridien
+% donc même longitude
+ /x_I Rsphere L cos mul l' cos mul def
+ /y_I Rsphere L sin mul l' cos mul def
+ /z_I Rsphere l' sin mul def
+ x_I x_o sub
+ y_I y_o sub
+ z_I z_o sub
+ /uOI defpoint3d
+ uOI dupp3d norme3d 1 exch div mulv3d
+ /v defpoint3d
+% un vecteur w normal à u et v dans le plan du cercle
+ u v vectprod3d dupp3d norme3d 1 exch div mulv3d
+ /w defpoint3d
+% on décrit le cercle
+
+ v 0 cos r' mul mulv3d
+ w 0 sin r' mul mulv3d
+ addv3d x_o y_o z_o addv3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ moveto
+0 1 360{%
+ /t exch def
+ v t cos r' mul mulv3d
+ w t sin r' mul mulv3d
+ addv3d x_o y_o z_o addv3d
+ /Zpoint exch def /Ypoint exch def /Xpoint exch def
+ CalculsPointsAfterTransformations
+ CalcCoordinates
+ lineto
+ } for
+stroke
+ } for
+end
+} def
+
+%% nouvelle construction des parallèles
+/Parallel {
+0 1 360{ % for
+ /theta exch def
+ /Xpoint Rsphere theta cos mul latitude_parallel cos mul def
+ /Ypoint Rsphere theta sin mul latitude_parallel cos mul def
+ /Zpoint Rsphere latitude_parallel sin mul def
+CalculsPointsAfterTransformations
+ Test
+ PS condition {
+ CalcCoordinates
+ moveto
+ /theta theta 1 add def
+ /Xpoint Rsphere theta cos mul latitude_parallel cos mul def
+ /Ypoint Rsphere theta sin mul latitude_parallel cos mul def
+ /Zpoint Rsphere latitude_parallel sin mul def
+CalculsPointsAfterTransformations
+Test
+ PS condition {
+CalcCoordinates
+ lineto }
+ {
+ /theta theta 1 sub def
+ /Xpoint Rsphere theta cos mul latitude_parallel cos mul def
+ /Ypoint Rsphere theta sin mul latitude_parallel cos mul def
+ /Zpoint Rsphere latitude_parallel sin mul def
+CalculsPointsAfterTransformations
+CalcCoordinates
+ lineto
+ } ifelse
+ } if
+ } for
+} def
+end
diff --git a/Master/texmf-dist/tex/generic/pst-geo/pst-map3d-doc.tex b/Master/texmf-dist/tex/generic/pst-geo/pst-map3d-doc.tex
new file mode 100644
index 00000000000..a4149e3ce14
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-geo/pst-map3d-doc.tex
@@ -0,0 +1,525 @@
+\documentclass[12pt]{article}
+\usepackage{pst-map3d,pstricks-add}
+\let\PSTfileversion\fileversion
+\let\PSTfiledate\filedate
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[garamond]{mathdesign}
+\renewcommand{\ttdefault}{lmtt}
+\usepackage{longtable,array}
+\usepackage{ragged2e}
+%\usepackage{url}
+\usepackage[a4paper,margin=2cm,nohead]{geometry}
+\usepackage[colorlinks=true]{hyperref}
+\usepackage{showexpl,xspace}
+\usepackage[french]{babel}
+\def\PST{\texttt{PSTricks}\xspace}
+\def\PS{\texttt{PostScript}\xspace}
+\makeatletter
+\newdimen\pssizeStar
+\def\psset@sizeStar#1{\pssetlength\pssizeStar{#1}}
+\psset@sizeStar{1.5pt}
+
+%% adapté de \psRandom du package pstricks-add
+%% pour rendre aléatoire la taille des étoiles
+\def\psRandomStar{\pst@object{psRandomStar}}%
+\def\psRandomStar@i{\@ifnextchar({\psRandomStar@ii}{\psRandomStar@iii(0,0)(1,1)}}
+\def\psRandomStar@ii(#1){\@ifnextchar({\psRandomStar@iii(#1)}{\psRandomStar@iii(0,0)(#1)}}
+\def\psRandomStar@iii(#1)(#2)#3{%
+ \def\pst@tempA{#3}%
+ \ifx\pst@tempA\pst@empty\psclip{\psframe(#2)}\else\psclip{#3}\fi
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \begin@SpecialObj
+ \addto@pscode{
+ \pst@tempA\space /yMin exch def
+ /xMin exch def
+ \pst@tempB\space /yMax exch def
+ /xMax exch def
+ /dy yMax yMin sub def
+ /dx xMax xMin sub def
+ rrand srand % initializes the random generator
+ /getRandReal { rand 2147483647 div } def
+ \psk@randomPoints {
+ /DS \pst@number\pssizeStar\space getRandReal mul def
+ \@nameuse{psds@\psk@dotstyle}
+ \ifPst@color getRandReal 1 1 sethsbcolor \fi
+ getRandReal dx mul xMin add
+ getRandReal dy mul yMin add
+ Dot
+ \ifx\psk@fillstyle\psfs@solid fill \fi stroke
+ } repeat
+ }%
+ \end@SpecialObj
+ \endpsclip
+ \ignorespaces
+}
+\makeatother
+\definecolor{graygreen}{cmyk}{0.7,0,0.6,0.2}
+\newcommand{\PstMapThreeDPackage}{`\textsf{pst-map3d}'}
+ \title{The \PstMapThreeDPackage{} package\\A PSTricks package for Geographical Projections}
+ \author{Manuel \textsc{Luque}
+ \mbox{\texttt{<manuel.luque27@gmail.com>}}\\
+ and\\
+ Giuseppe \textsc{Matarazzo} \mbox{\texttt{<joematara@hotmail.com>}}}
+ \date{Version 2.0\\ 18 mars 2008}
+
+\begin{document}
+\maketitle
+\begin{abstract}
+\PstMapThreeDPackage{} traite de la représentation en trois dimensions
+ du globe terrestre avec plusieurs fonctionnalités qui rendent son
+ utilisation agréable (tout au moins nous l'espérons).
+
+Il s'agit d'une reprise du package élaboré avec Giuseppe Matarazzo en
+2003. Celui-ci présentait quelques erreurs de représentation lorsqu'une
+grande partie d'un pays était cachée aux yeux de l'observateur. Une idée
+très astucieuse de Christophe Poulain permettant de résoudre ce problème
+est à l'origine de la refonte du package. J'ai aussi profité de quelques
+macros \texttt{postscript} mises au point par Jean-Paul Vignault pour
+l'écriture du package \texttt{`pst-solides3d'}.
+
+L'élaboration et la mise en ligne de ce package a bénéficié des
+encouragements, de toute la compétence et de la disponibilité de
+Jean-Michel Sarlat.
+
+La plus grande le code ayant donc du être réécrite, il m'a semblé
+judicieux d'introduire de nouvelles fonctionnalités parmi lesquelles :
+le \textit{globe tellure}, les plaques tectoniques, les épicentres des
+séismes, les zones de fracture et les linéations magnétiques (anomalies
+magnétiques des fonds océaniques).
+
+\end{abstract}
+ \tableofcontents
+% \newpage
+ \section{Les données\label{datas}}
+GLOBE Binaries DECODING : World Public Domain Dbase :
+ F.Pospeschil, A.Rivera (1999)
+
+\url{ftp://ftp.blm.gov/pub/gis/wdbprg.zip}
+
+Elles ont \'et\'e converties sous forme de tableau PostScript, en
+degr\'es,
+gr\^ ace à un petit programme en pascal (de Giuseppe Matarazzo) qui
+fait partie de la distribution. Ce sont les mêmes données que
+celles du package \textsf{pst-map2d}.
+\section{Les paramètres}
+\begin{longtable}{|>{\bfseries\ttfamily\color{blue}}l|c|m{10cm}|}
+ \hline
+ \multicolumn{1}{|c|}{\textbf{Paramètre}}&
+ \multicolumn{1}{c|}{\textbf{Défaut}}&
+ \multicolumn{1}{c|}{\textbf{Signification}} \\ \hline\hline
+\endfirsthead
+\hline
+ \multicolumn{1}{|c|}{\textbf{Paramètre}}&
+ \multicolumn{1}{c|}{\textbf{Défaut}}&
+ \multicolumn{1}{c|}{\textbf{Signification}} \\ \hline\hline
+\endhead
+\multicolumn{3}{|r|}{\textit{Suite à la page suivante}}\\ \hline
+\endfoot
+\multicolumn{3}{|r|}{\textit{Fin de la table}}\\ \hline
+\endlastfoot
+Radius&5&rayon du globe \\\hline
+Dobs&20&distance de l'observateur au centre du globe \\\hline
+Decran&25&distance de l'écran à l'observateur \\\hline
+THETA&0& angle définissant, avec $\phi$ en coordonnées sphériques la position de l'observateur \\\hline
+PHI&45& angle définissant, avec $\theta$ en coordonnées sphériques la position de l'observateur \\\hline
+RotZ&0& rotation du globe autour de l'axe vertical $Oz$ en degrés\\\hline
+RotX&0& rotation du globe autour de l'axe horizontal $Ox$ en degrés\\\hline
+RotY&0& rotation du globe autour de l'axe horizontal $Oy$ en degrés\\\hline
+gridmap&true& boléen : trace le maillage de la sphère : méridiens et parallèles\\\hline
+gridmapdiv&$10^{\mathrm{o}}$& écart angulaire entre 2 méridiens ou 2 parallèles\\\hline
+gridmapcolor&black& couleur des méridiens et parallèles\\\hline
+gridmapwidth&0.8pt & épaisseur des lignes des méridiens et parallèles\\\hline
+mapcolor&``terre''& couleur des continents : la couleur ``terre'' a été prédéfinie\\\hline
+oceancolor&``mer''& couleur des océans et mers : : la couleur ``mer'' a été prédéfinie\\\hline
+borders&true& booléen : dessine les frontières\\\hline
+bordercolor&black& couleur des frontières\\\hline
+borderwidth&0.8pt & épaisseur des frontières\\\hline
+france&false& booléen : dessine la France métropolitaine et la Corse.
+ Destiné à la représentation particulière de la France ou bien à sa mise en valeur.\\\hline
+coasts&true& booléen : dessine les côtes\\\hline
+coastcolor&black& couleur des côtes\\\hline
+coastwidth&0.8pt & épaisseur des côtes\\\hline
+islandcolor&black& couleur du contour des îles\\\hline
+rivers&true& booléen : dessine les fleuves\\\hline
+lakes&true& booléen : dessine les lacs\\\hline
+capitals&true& booléen : marque les capitales visibles\\\hline
+citys&true& booléen : marque toutes les villes visibles\\\hline
+usa&false& booléen : dessine les états \\\hline
+australia&false& booléen : dessine les états \\\hline
+mexico&false& booléen : dessine les états \\\hline
+circles&false& booléen : dessine des cercles parallèles sur les océans et les mers \\\hline
+circlecolor&blue& couleur des côtes\\\hline
+circlewidth&0.5pt & épaisseur des côtes\\\hline
+circlesep&$2^{\mathrm{o}}$& écart angulaire entre 2 cercles\\\hline
+visibility&booléen& true : dessine les parties du globe visibles pour l'observateur\\\hline
+blueEarth&booléen& true : dessine un disque couleur de l'océan à la dimension du globe\\\hline
+daynight&booléen& false : dessine la nuit sur le globe\\\hline
+hour&12 & heure locale du lieu\\\hline
+Day&le jour actuel& jour d'observation\\\hline
+Month&le mois actuel& mois d'observation\\\hline
+ridge&false& trace les limites des plaques tectoniques\\\hline
+ridgecolor&red& couleur des dorsales\\ \hline
+trenchcolor&darkgreen& couleur des lignes de convergence\\ \hline
+transfrmcolor&orange& couleur des lignes de transcurrence\\ \hline
+ridgewidth&2 pt& épaisseur des lignes précédentes\\ \hline
+zonefrac&false& booléen : tracé des lignes de fracture\\ \hline
+zonefraccolor&red& couleur des lignes de fracture\\ \hline
+zonefracwidth&0.8 pt& épaisseur des lignes de fracture\\ \hline
+wmaglinwidth&0.8 pt& épaisseur des lignes de linéation magnétique\\ \hline
+wmaglin&false& booléen : tracé des linéations magnétiques\\ \hline
+wmaglincolor&red& couleur des linéations magnétiques\\ \hline
+Year&l'année actuelle& l'année d'observation\\\hline
+waves&3& nombre de cercles concentriques à partir de l'épicentre\\\hline
+Rmax&1500& Rayon, en km, du plus grand cercle centré sur l'épicentre\\\hline
+\end{longtable}
+\section{La représentation du globe}
+
+La représentation du globe est centrée sur Paris avec les paramètres
+\begin{center}\centering \verb+\psset{PHI=48.85,THETA=2.32}+.\end{center}
+Un effet de moirage apparaît du aux
+cercles concentriques tracés sur la sphère. Différentes options de
+couleur sont testées avec cet exemple.
+
+%\begin{LTXexample}[width=8cm]
+\begin{pspicture}(-4,-4)(4,4)
+\psset{PHI=48.85,THETA=2.32,Decran=15,path=../data}
+\WorldMapThreeD[gridmapcolor=yellow,circlesep=1,mapcolor=green!50,bordercolor=red,
+ coastwidth=1.2pt,capitals,islandcolor=blue,coastcolor=blue,coasts]
+\psmeridien{2.32}
+\psparallel{48.85}
+\mapputIIID(2.32,48.85){Paris}
+\end{pspicture}
+%\end{LTXexample}
+
+\section{Effet de transparence et rotations}
+
+La transparence(resp. opacité) du globe se règle avec le paramètre
+\texttt{opacity}. Si l'on souhaite combiner les rotations celles-ci
+s'effectuent, pour des raisons spécifiques à ce package, dans l'ordre
+suivant \texttt{RotZ}, \texttt{RotX}, \texttt{RotY}.
+
+Rappelons que les effets de transparence ne sont possibles qu'avec le
+fichier \texttt{pdf}, celui-ci sera obtenu avec la séquence de commandes:
+\texttt{\LaTeX}-->\texttt{dvips}-->\texttt{ps2pdf}.
+
+%\begin{LTXexample}[width=8.2cm]
+\begin{pspicture}(-4,-4)(4,4)
+\psset{RotX=-23,RotZ=30,PHI=46.5833,THETA=0.3333,visibility=false,Decran=15,path=../data}
+\WorldMapThreeD[circles=false,blueEarth=false]
+\WorldMapThreeD[circles=false,visibility=true,opacity=0.7]
+\psmeridien[visibility=true]{0.333}
+\psparallel[visibility=true]{46.5833}
+\mapputIIID(0.3333,46.5833){Poitiers}
+\end{pspicture}
+%\end{LTXexample}
+
+
+\section{Mise en valeur du territoire français}
+\begin{center}
+
+\begin{pspicture*}(-0.5\linewidth,-0.45\textheight)(0.5\linewidth,0.5\textheight)
+\psset{PHI=45,THETA=5,unit=7.5,path=../data}
+\WorldMapThreeD[lakes=false,circlesep=0.25,lakes=false,gridmap=false,
+ mapcolor=graygreen!50,bordercolor=red,rivers=false,
+ coasts=false,islandcolor=blue]%
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,lakes=true,gridmapdiv=5,france=true,
+ islandcolor=blue,blueEarth=false,
+ bordercolor=red,islands=false,borders=false,rivers=true,coasts=true,
+ coastcolor=blue]%
+\psmeridien{2.32}
+\psparallel{48.85}
+\newpsstyle{NodeLabelStyle}{fillstyle=solid,fillcolor=yellow!50,framesep=0,
+ linestyle=none,opacity=0.5}
+\input{villesFrance3d}
+\newpsstyle{NodeLabelStyle}{fillstyle=solid,fillcolor=red!50,
+ framesep=0,linestyle=none,opacity=0.5}
+\newpsstyle{psNodeMapStyle}{fillstyle=solid,fillcolor=yellow!50,linecolor=red}
+\psset{nodeWidth=0.025\psunit,linecolor=red}
+\pnodeMapIIID(15.2833,37.0833){Syracuse}
+\pscircle[fillstyle=solid,fillcolor=green](Syracuse){0.025\psunit}
+\psdot[dotsize=0.025\psunit](Syracuse)
+\uput[l](Syracuse){\psframebox[fillstyle=solid,fillcolor=yellow,framesep=0,
+ linestyle=none,opacity=0.5]{\textsf{Syracuse}}}
+\pnodeMapIIID(10.51667,43.85){Lucques}
+\pscircle[fillstyle=solid,fillcolor=green](Lucques){0.025\psunit}
+\psdot[dotsize=0.025\psunit](Lucques)
+\uput[u](Lucques){\psframebox[fillstyle=solid,fillcolor=yellow!50,framesep=0,
+ linestyle=none,opacity=0.5]{\textsf{Lucques}}}
+\input{capitales}
+\psepicenter[circlecolor=red,waves=16,Rmax=2000](0.3333,46.5833){Poitiers}
+\end{pspicture*}
+
+\end{center}
+
+\section{Les macros}
+\subsection{La commande \textbackslash pnodeMapIIID}
+Une commande créée à cet effet permet de placer en un point du globe, défini
+par sa longitude et sa latitude, une ville, un lieu, un symbole ou une
+annotation quelconque. Cette commande qui utilise le package
+\textsf{pst-node} est la suivante :
+\begin{verbatim}
+\pnodeMapIIID(longitude,latitude){nom}
+\end{verbatim}
+\textsf{longitude} et \textsf{latitude} sont en degrés, le \textsf{nom}
+attribué au n\oe{}ud ne doit pas contenir de lettre accentuée.
+\subsection{La commande \textbackslash mapputIIID}
+La commande \verb+\mapputIIID(0.100000,49.483333){Le Havre}+ est identique à la suite de commandes :
+\begin{itemize}
+\item \verb+\pnodeMapIIID(0.100000,49.483333){LeHavre}+
+\item \verb+\psdot[linecolor=red,dotsize=2mm](LeHavre)+
+\item \verb+\uput[u](LeHavre){\psframebox*[fillstyle=solid,+\\
+ \verb+ fillcolor=yellow,framesep=0]{\textsf{Le Havre}}}+
+\end{itemize}
+D'une façon générale elle s'écrit :
+\begin{verbatim}
+ \mapputIIID[angle](longitude,lattitude)[node name]{node label}[country]
+\end{verbatim}
+Ce qui est entre crochets est facultatif. Par défaut l'angle de positionnement vaut $90^{\mathrm{o}}$.
+
+Les paramètres avec les valeurs par défaut sont les suivants :
+\begin{verbatim}
+ \newpsstyle{psNodeMapStyle}{fillstyle=solid,fillcolor=red}
+ \newpsstyle{NodeLabelStyle}{fillstyle=solid,fillcolor=yellow,
+ framesep=0,linestyle=none}
+ nodeWidth=1 mm
+\end{verbatim}
+\subsection{La commande \textbackslash psmeridien}
+\begin{verbatim}
+\psmeridien[options]{longitude}
+\end{verbatim}
+Elle permet de tracer la partir visible du méridien défini par sa
+longitude en degrés.
+
+\subsection{La commande \textbackslash psparallel}
+\begin{verbatim}
+\psparallel[options]{latitude}
+\end{verbatim}
+Elle permet de tracer la partir visible du cercle parallèle à
+l'équateur défini par sa latitude en degrés.
+
+\section{Le globe tellure}
+
+Le \textit{globe tellure} est décrit dans le document
+\textit{Globe\_tellure\_original.pdf}.
+
+La macro qui lui est associée est la suivante :
+\begin{verbatim}
+\def\psGlobeTellure{\pst@object{psGlobeTellure}}
+\def\psGlobeTellure@i(#1,#2)#3{% longitude, latitude et nom de la ville
+ \begin@SpecialObj%
+ \pnode(!/ux 0 def /uy 90 #2 sub sin def /uz 90 #2 sub cos def 0 0){ttt}%
+ \psset{PHI=0,THETA=0}%
+ {\psset{RotX=#2 90 sub,RotZ=90 #1 add}
+ \WorldMapThreeD[style=\psk@styleGlobe,daynight=false]%
+ \mapputIIID(#1,#2){#3}}%
+ \WorldMapThreeD[style=\psk@styleNight,daynight=true,circles=false,
+ blueEarth=false,
+ borders=false,islands=false,
+ rivers=false,lakes=false,
+ gridmap=false,latitudeParallel=#2]%
+ \psframe*(-3,-6.5)(3,-5.5)
+ \rput(! 0 \psk@TroisD@Radius\space neg -1 add){%
+ \white%
+ \psk@WorldMap@hour h le \psk@WorldMap@J/\psk@WorldMap@M/\psk@WorldMap@A}
+ \end@SpecialObj%
+ \ignorespaces}%
+\end{verbatim}
+Les deux styles associés à la partie éclairée et à la partie dans
+l'ombre sont :
+
+\begin{verbatim}
+\newpsstyle{Globe}{circles=true}
+\newpsstyle{night}{fillstyle=solid,fillcolor=black,opacity=0.8}
+\end{verbatim}
+et sont modifiables grâce aux deux options : \texttt{[styleGlobe=Globe]}
+et \texttt{[styleNight=night]} qui sont les styles par défaut.
+
+Elle s'utilise simplement, mais elle n'est valable que pour les villes de l'hémisphère nord :
+
+%\begin{LTXexample}[width=8cm]
+\begin{postcript}
+\definecolor{BlueDark}{cmyk}{1,1,0,0.5}
+\newpsstyle{Globe}{circles=true,gridmap=true,daynight=false}
+\newpsstyle{night}{fillstyle=solid,fillcolor=BlueDark,linecolor=BlueDark,opacity=0.8}
+\psset{Radius=5,Decran=100,Dobs=100,unit=0.5,path=../data}
+\begin{pspicture}(-7,-7)(7,7)
+\psframe*[linecolor=BlueDark](-7,-7)(7,7)%
+\psRandomStar[linecolor=yellow!50,randomPoints=100](-7,-7)(7,7){\psframe(-7,-7)(7,7)}
+\psGlobeTellure[hour=10,Day=22,Month=06,Year=2008](15.28,37.07){Syracuse}
+\end{pspicture}
+\end{postcript}
+%\end{LTXexample}
+
+Elle comprend en options, l'heure locale, le jour, le mois et l'année et
+en argument les coordonnées géographiques de la ville ainsi que son nom.
+
+La commande \verb+\psRandomStar(-7,-7)(7,7){\psframe(-7,-7)(7,7)}+ a été
+empruntée au package \texttt{pstricks-add} et permet de dessiner des
+étoiles dont la position et la taille sont aléatoires. Par rapport à la
+commande de \texttt{pstricks-add}, il y a en plus l'option
+\texttt{[sizeStar=1.5pt]} qui permet de fixer la taille maximale des
+étoiles. La package
+\texttt{pstricks-add} doit être chargé en préambule avant
+\PstMapThreeDPackage.
+
+\begin{verbatim}
+\newdimen\pssizeStar
+\def\psset@sizeStar#1{\pssetlength\pssizeStar{#1}}
+\psset@sizeStar{1.5pt}
+
+%% adapté de \psRandom du package pstricks-add
+%% pour rendre aléatoire la taille des étoiles
+\def\psRandomStar{\pst@object{psRandomStar}}%
+\def\psRandomStar@i{%
+ \@ifnextchar({\psRandomStar@ii}{\psRandomStar@iii(0,0)(1,1)}}
+\def\psRandomStar@ii(#1){%
+ \@ifnextchar({\psRandomStar@iii(#1)}{\psRandomStar@iii(0,0)(#1)}}
+\def\psRandomStar@iii(#1)(#2)#3{%
+ \def\pst@tempA{#3}%
+ \ifx\pst@tempA\pst@empty\psclip{\psframe(#2)}\else\psclip{#3}\fi
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \begin@SpecialObj
+ \addto@pscode{
+ \pst@tempA\space /yMin exch def
+ /xMin exch def
+ \pst@tempB\space /yMax exch def
+ /xMax exch def
+ /dy yMax yMin sub def
+ /dx xMax xMin sub def
+ rrand srand % initializes the random generator
+ /getRandReal { rand 2147483647 div } def
+ \psk@randomPoints {
+ /DS \pst@number\pssizeStar\space getRandReal mul def
+ \@nameuse{psds@\psk@dotstyle}
+ \ifPst@color getRandReal 1 1 sethsbcolor \fi
+ getRandReal dx mul xMin add
+ getRandReal dy mul yMin add
+ Dot
+ \ifx\psk@fillstyle\psfs@solid fill \fi stroke
+ } repeat
+ }%
+ \end@SpecialObj
+ \endpsclip
+ \ignorespaces
+}
+\makeatother
+\end{verbatim}
+\section{Les épicentres}
+La commande suivante :
+\begin{verbatim}
+\psepicenter[circlecolor=red,waves=4,Rmax=2000](95.98,3.30){Sumatra}
+\end{verbatim}
+tracera l'épicentre du séisme qui eut lieu sur la côte occidentale du
+nord de Sumatra le 26 décembre 2004, les coordonnées géographiques sont
+indiquées entre les parenthèses :
+\texttt{(longitude, latitude)}, la nom de la ville ou de la région entre
+accolades. Les paramètres optionnels concernent la couleur des cercles
+concentriques, leur nombre et le rayon maximum en km de l'onde,
+l'épaisseur se règle avec
+\texttt{[circlewidth=2pt]}.
+
+Il y a de très nombreux renseignements sur les séismes sur le site :
+
+\centerline{\url{http://earthquake.usgs.gov/eqcenter/eqarchives/year/magnitude8_1900_date.php}}
+
+%\begin{LTXexample}[pos=t]
+\begin{pspicture}(-5,-5)(5,5)
+\psset{Radius=5,Dobs=200,Decran=200,path=../data}
+\psset{PHI=10,THETA=120,circlewidth=1.5pt}
+\WorldMapThreeD[circles=false,australia=true]%
+\psmeridien{95.98}
+\psparallel{3.30}
+\psepicenter[circlecolor=red,waves=4,Rmax=2000](95.98,3.30){Sumatra}
+\psmeridien[meridiencolor=green]{160}
+\psparallel[parallelcolor=green]{52.76}
+\psepicenter[circlecolor=green](160,52.76){Kamchatka}
+\end{pspicture}
+%\end{LTXexample}
+
+
+\section{Les plaques tectoniques}
+
+Elles se tracent avec l'option \texttt{ridge}. Les différents types se
+distinguent par des couleurs différentes (paramétrables : voir la partie
+correspondant aux paramètres).
+
+Les données relatives aux plaques ont été obtenues sur le site :
+
+\centerline{\url{http://www.ig.utexas.edu/research/projects/plates/}}
+
+%\begin{LTXexample}[pos=t]
+\begin{postscript}
+\psset{unit=0.8,RotX=0,Decran=100,Dobs=100,PHI=0,THETA=-100,path=../data}
+\begin{pspicture}(-5,-5)(5,5)
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,ridge=true]%
+\psframe(4,-6.4)(10.5,-3.6)
+\uput[r](4,-4){Tectonic plates boundaries}
+\psline[linecolor=red,linewidth=2pt](4.2,-4.5)(5,-4.5)\uput[r](5,-4.5){\color{red}{Ridge}}
+\psline[linecolor=darkgreen,linewidth=2pt](4.2,-5.25)(5,-5.25)\uput[r](5,-5.25){\color{darkgreen}{Trench}}
+\psline[linecolor=orange,linewidth=2pt](4.2,-6)(5,-6)\uput[r](5,-6){\color{orange}{Transform}}
+\end{pspicture}\\
+\begin{pspicture}(-5,-5)(5,5)
+\psset{PHI=0,THETA=100}
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,ridge=true]%
+\end{pspicture}
+\end{postscript}
+
+%\end{LTXexample}
+
+\section{Les zones de fracture et les linéations magnétiques}
+
+%\begin{LTXexample}[pos=t]
+\begin{postscript}
+\psset{Decran=100,Dobs=100,unit=0.8,path=../data}
+\begin{pspicture}(-5,-5)(5,5)
+\psset{PHI=0,THETA=-90}
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,wfraczon=true]%
+\psline[linecolor=red,linewidth=2pt](4.2,-5)(5,-5)\uput[r](5,-5){\color{red}{wzonfrac}}
+\end{pspicture}\\
+\begin{pspicture}(-5,-5)(5,5)
+\psset{PHI=0,THETA=90}
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,wfraczon=true]%
+\end{pspicture}
+\end{postscript}
+%\end{LTXexample}
+%\begin{LTXexample}[pos=t]
+
+\begin{postscript}
+\psset{Decran=100,Dobs=100,unit=0.8,path=../data}
+\begin{pspicture}(-5,-5)(5,5)
+\psset{PHI=0,THETA=-90}
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,wmaglin=true]%
+\psline[linecolor=darkblue,linewidth=2pt](4.2,-5)(5,-5)\uput[r](5,-5){\color{darkblue}{wmaglin}}
+\end{pspicture}\\
+\begin{pspicture}(-5,-5)(5,5)
+\psset{PHI=0,THETA=90}
+\WorldMapThreeD[gridmapcolor=yellow,circles=false,wmaglin=true]%
+\end{pspicture}
+\end{postscript}
+%\end{LTXexample}
+
+
+\section{Quelques liens}
+Le développement du package : \url{http://syracuse-dev.org/mpst-globe}
+
+\url{http://melusine.eu.org/syracuse/pstricks/pst-solides3d/}
+
+Pour les données sur les plaques tectoniques, les volcans, les
+linéations magnétiques et le zones de fracture :
+
+\url{http://www.versamap.com/webdoc03.htm}
+
+
+\nocite{*}
+\bgroup
+\RaggedRight
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+\egroup
+
+
+
+\end{document}
diff --git a/Master/texmf-dist/tex/generic/pst-geo/pst-map3d.tex b/Master/texmf-dist/tex/generic/pst-geo/pst-map3d.tex
index 6bfecd2f11a..7f0fcdd5008 100644
--- a/Master/texmf-dist/tex/generic/pst-geo/pst-map3d.tex
+++ b/Master/texmf-dist/tex/generic/pst-geo/pst-map3d.tex
@@ -7,40 +7,43 @@
%%
%% Manuel Luque <Mluque5130@aol.com> (France)
%% Giuseppe Matarazzo <joematara@hotmail.com> (Italy)
-%% Herbert Voss <voss _at_ perce.de> (Germany)
%%
-%% May 09, 2004
+%% May 29, 2008
%%
%% 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-map3d' is a PSTricks package to create geographical objects
+%% `pst-map2dII' is a PSTricks package to create geographical objects
%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% nouvelle version de pst-map3d %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname PSTMapThreeD\endcsname
\let\PSTMapThreeDLoaded\endinput
% Require PSTricks
\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
-\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi % hv 2004-05-09
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi
-\def\fileversion{1.04}
-\def\filedate{2008/04/05}
+\def\fileversion{2.0}
+\def\filedate{2008/03/05}
-\message{`PST-map3d v\fileversion, \filedate\space (ML/GM/HV)}
+\message{`PST-map3d v\fileversion, \filedate}
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
\pst@addfams{pst-map3d}
%
+\definecolor{orange}{cmyk}{0,0.61,0.87,0}
+\definecolor{darkgreen}{cmyk}{1,0,1,0.5}
\SpecialCoor
%
\define@key[psset]{pst-map3d}{path}{\edef\psk@WorldMap@Path{#1}} % chemin des données
\psset{path=data}
%
-\pstheader{map3d.pro}
+\pstheader{pst-map3d.pro}
\define@key[psset]{pst-map3d}{RotX}{\edef\psk@TroisD@RotX{#1}} % rotation autour de Ox en degrés
\define@key[psset]{pst-map3d}{RotY}{\edef\psk@TroisD@RotY{#1}} % rotation autour de Oy en degrés
\define@key[psset]{pst-map3d}{RotZ}{\edef\psk@TroisD@RotZ{#1}} % rotation autour de OZ en degrés
@@ -54,19 +57,127 @@
%
\psset{RotX=0,RotY=0,RotZ=0,Radius=5}
%
-\define@key[psset]{pst-map3d}{increment}{\edef\psk@WorldMap@increment{#1}}
-\psset{increment=10}
+\define@key[psset]{pst-map3d}{Day}{\def\psk@WorldMap@J{#1}}
+\define@key[psset]{pst-map3d}{Month}{\def\psk@WorldMap@M{#1}}
+\define@key[psset]{pst-map3d}{Year}{\def\psk@WorldMap@A{#1}}
+\psset{Day=\number\day,Month=\number\month,Year=\number\year}
+\define@key[psset]{pst-map3d}{hour}{\edef\psk@WorldMap@hour{#1}}
+\psset{hour=12} % en heures
%
-\define@key[psset]{pst-map3d}{maillageColor}{\edef\psk@WorldMap@maillageColor{#1}}
-\psset{maillageColor= 0.5 0.5 0.5 }
+\define@key[psset]{pst-map3d}{gridmapdiv}{\edef\psk@WorldMap@mapgriddiv{#1}}
+\psset{gridmapdiv=10}
%
-\define@key[psset]{pst-map3d}{MapFillColor}{\edef\psk@WorldMap@Fillcolor{#1}} % couleur des continents
-\psset{MapFillColor= 0.99 0.95 0.7 }
+\define@key[psset]{pst-map3d}{longitudeMeridien}{\edef\psk@WorldMap@longitudeMeridien{#1}}
+\psset{longitudeMeridien=0}
%
-\define@key[psset]{pst-map3d}{level}{\edef\psk@WorldMap@level{#1}}
-\psset{level=1}
+\newdimen\psmeridienwidth
+\def\psset@meridienwidth#1{\pssetlength\psmeridienwidth{#1}}
+\psset@meridienwidth{1pt}
%
-\def\geo@variablesIIID{%
+\define@key[psset]{pst-map3d}{meridiencolor}{%
+\pst@getcolor{#1}\psmeridiencolor}
+\psset[pst-map3d]{meridiencolor=red}
+%
+\define@key[psset]{pst-map3d}{latitudeParallel}{\edef\psk@WorldMap@latitudeParallel{#1}}
+\psset{latitudeParallel=0}
+%
+\newdimen\psparallelwidth
+\def\psset@parallelwidth#1{\pssetlength\psparallelwidth{#1}}
+\psset@parallelwidth{1pt}
+%
+\define@key[psset]{pst-map3d}{parallelcolor}{%
+\pst@getcolor{#1}\psparallelcolor}
+\psset[pst-map3d]{parallelcolor=red}
+%
+
+\definecolor{terre}{rgb}{0.99,0.95,0.7}
+\definecolor{mer}{rgb}{0.5,0.8,0.8}
+\definecolor{darkblue}{cmyk}{1,1,0,0.7}
+
+\define@key[psset]{pst-map3d}{mapcolor}{%
+\pst@getcolor{#1}\psmapcolor}
+\psset[pst-map3d]{mapcolor=terre}
+
+\define@key[psset]{pst-map3d}{bordercolor}{%
+\pst@getcolor{#1}\psbordercolor}
+\psset[pst-map3d]{bordercolor=black}
+
+\define@key[psset]{pst-map3d}{islandcolor}{%
+\pst@getcolor{#1}\psislandcolor}
+\psset[pst-map3d]{islandcolor=black}
+
+\define@key[psset]{pst-map3d}{coastcolor}{%
+\pst@getcolor{#1}\pscoastcolor}
+\psset[pst-map3d]{coastcolor=black}
+
+\define@key[psset]{pst-map3d}{oceancolor}{%
+\pst@getcolor{#1}\psoceancolor}
+\psset[pst-map3d]{oceancolor=mer}
+
+\define@key[psset]{pst-map3d}{rivercolor}{%
+\pst@getcolor{#1}\psrivercolor}
+\psset[pst-map3d]{rivercolor=blue}
+
+\define@key[psset]{pst-map3d}{wfraczoncolor}{%
+\pst@getcolor{#1}\pswfraczoncolor}
+\psset[pst-map3d]{wfraczoncolor=red}
+
+\define@key[psset]{pst-map3d}{wmaglincolor}{%
+\pst@getcolor{#1}\pswmaglincolor}
+\psset[pst-map3d]{wmaglincolor=darkblue}
+
+\define@key[psset]{pst-map3d}{ridgecolor}{%
+\pst@getcolor{#1}\psridgecolor}
+\psset[pst-map3d]{ridgecolor=red}
+
+\define@key[psset]{pst-map3d}{transfrmcolor}{%
+\pst@getcolor{#1}\pstransfrmcolor}
+\psset[pst-map3d]{transfrmcolor=orange}
+
+\define@key[psset]{pst-map3d}{trenchcolor}{%
+\pst@getcolor{#1}\pstrenchcolor}
+\psset[pst-map3d]{trenchcolor=darkgreen}
+
+\define@key[psset]{pst-map3d}{gridmapcolor}{%
+\pst@getcolor{#1}\psgridmapcolor}
+\psset[pst-map3d]{gridmapcolor=black}
+
+\define@key[psset]{pst-map3d}{circlecolor}{%
+\pst@getcolor{#1}\pscirclecolor}
+\psset[pst-map3d]{circlecolor=blue}
+
+\define@key[psset]{pst-map3d}{circlesep}{\edef\psk@WorldMap@circlesep{#1}}
+\psset{circlesep=2} % en degres
+
+\newdimen\pscirclewidth
+\def\psset@circlewidth#1{\pssetlength\pscirclewidth{#1}}
+\psset@circlewidth{.5pt}
+
+\newdimen\psgridmapwidth
+\def\psset@gridmapwidth#1{\pssetlength\psgridmapwidth{#1}}
+\psset@gridmapwidth{.8pt}
+
+\newdimen\psborderwidth
+\def\psset@borderwidth#1{\pssetlength\psborderwidth{#1}}
+\psset@borderwidth{.8pt}
+
+\newdimen\pscoastwidth
+\def\psset@coastwidth#1{\pssetlength\pscoastwidth{#1}}
+\psset@coastwidth{.8pt}
+
+\newdimen\pswfraczonwidth
+\def\psset@wfraczonwidth#1{\pssetlength\pswfraczonwidth{#1}}
+\psset@wfraczonwidth{.8pt}
+
+\newdimen\pswmaglinwidth
+\def\psset@wmaglinwidth#1{\pssetlength\pswmaglinwidth{#1}}
+\psset@wmaglinwidth{.8pt}
+
+\newdimen\psridgewidth
+\def\psset@ridgewidth#1{\pssetlength\psridgewidth{#1}}
+\psset@ridgewidth{2pt}
+
+\def\variablesTroisD{%
/RotX \psk@TroisD@RotX\space def
/RotY \psk@TroisD@RotY\space def
/RotZ \psk@TroisD@RotZ\space def
@@ -75,87 +186,408 @@
/Rsphere \psk@TroisD@Radius\space def
/Dobs \psk@TroisD@Dobs\space def
/DScreen \psk@TroisD@Ecran\space def
- /step \psk@WorldMap@level\space def
+ /xunit {\pst@number\psxunit\space mul}def
+ /yunit {\pst@number\psyunit\space mul}def
+ /runit {\pst@number\psrunit\space mul}def
}%
%
+\newif\ifPst@WorldMap@island
+\define@key[psset]{pst-map3d}{islands}[false]{\@nameuse{Pst@WorldMap@island#1}}
+\psset{islands=true}
+%
+\newif\ifPst@WorldMap@border
+\define@key[psset]{pst-map3d}{borders}[false]{\@nameuse{Pst@WorldMap@border#1}}
+\psset{borders=true}
+%
+\newif\ifPst@WorldMap@france
+\define@key[psset]{pst-map3d}{france}[true]{\@nameuse{Pst@WorldMap@france#1}}
+\psset{france=false}
+%
\newif\ifPst@WorldMap@capitals
-\define@key[psset]{pst-map3d}{capital}[false]{\@nameuse{Pst@WorldMap@capitals#1}}
-\psset{capital=false}
+\define@key[psset]{pst-map3d}{capitals}[true]{\@nameuse{Pst@WorldMap@capitals#1}}
+\psset{capitals=false}
+%
+\newif\ifPst@WorldMap@usa
+\define@key[psset]{pst-map3d}{usa}[true]{\@nameuse{Pst@WorldMap@usa#1}}
+\psset{usa=false}
+%
+\newif\ifPst@WorldMap@mexico
+\define@key[psset]{pst-map3d}{mexico}[true]{\@nameuse{Pst@WorldMap@mexico#1}}
+\psset{mexico=false}
+%
+\newif\ifPst@WorldMap@australia
+\define@key[psset]{pst-map3d}{australia}[true]{\@nameuse{Pst@WorldMap@australia#1}}
+\psset{australia=false}
+%
+\newif\ifPst@WorldMap@canada
+\define@key[psset]{pst-map3d}{canada}[true]{\@nameuse{Pst@WorldMap@canada#1}}
+\psset{canada=false}
%
\newif\ifPst@WorldMap@city
-\define@key[psset]{pst-map3d}{city}[false]{\@nameuse{Pst@WorldMap@city#1}}
-\psset{city=false}
+\define@key[psset]{pst-map3d}{citys}[false]{\@nameuse{Pst@WorldMap@city#1}}
+\psset{citys=false}
%
-\newif\ifPst@WorldMap@Rivers% hv 2004-05-03
-\define@key[psset]{pst-map3d}{rivers}[true]{\@nameuse{Pst@WorldMap@Rivers#1}}
+\newif\ifPst@WorldMap@Rivers%
+\define@key[psset]{pst-map3d}{rivers}[false]{\@nameuse{Pst@WorldMap@Rivers#1}}
\psset{rivers=true}
%
-\newif\ifPst@WorldMap@maillage
-\define@key[psset]{pst-map3d}{maillage}[true]{\@nameuse{Pst@WorldMap@maillage#1}}
-\psset{maillage=true}
+\newif\ifPst@WorldMap@Lake%
+\define@key[psset]{pst-map3d}{lakes}[false]{\@nameuse{Pst@WorldMap@Lake#1}}
+\psset{lakes=true}
%
+\newif\ifPst@WorldMap@gridmap
+\define@key[psset]{pst-map3d}{gridmap}[true]{\@nameuse{Pst@WorldMap@gridmap#1}}
+\psset{gridmap=true}
+%
+\newif\ifPst@WorldMap@coasts
+\define@key[psset]{pst-map3d}{coasts}[true]{\@nameuse{Pst@WorldMap@coasts#1}}
+\psset{coasts=false}
+%
+\newif\ifPst@WorldMap@fraczon
+\define@key[psset]{pst-map3d}{wfraczon}[true]{\@nameuse{Pst@WorldMap@fraczon#1}}
+\psset{wfraczon=false}
+%
+\newif\ifPst@WorldMap@ridge
+\define@key[psset]{pst-map3d}{ridge}[true]{\@nameuse{Pst@WorldMap@ridge#1}}
+\psset{ridge=false}
+%
+\newif\ifPst@WorldMap@maglin
+\define@key[psset]{pst-map3d}{wmaglin}[true]{\@nameuse{Pst@WorldMap@maglin#1}}
+\psset{wmaglin=false}
+%
+\newif\ifPst@WorldMap@circles
+\define@key[psset]{pst-map3d}{circles}[false]{\@nameuse{Pst@WorldMap@circles#1}}
+\psset{circles=true}
+%
+\newif\ifPst@WorldMap@visibility
+\define@key[psset]{pst-map3d}{visibility}[false]{\@nameuse{Pst@WorldMap@visibility#1}}
+\psset{visibility=true}
+%
+\newif\ifPst@WorldMap@blueEarth
+\define@key[psset]{pst-map3d}{blueEarth}[false]{\@nameuse{Pst@WorldMap@blueEarth#1}}
+\psset{blueEarth=true}
+%
+\newif\ifPst@WorldMap@ombre
+\define@key[psset]{pst-map3d}{daynight}[true]{\@nameuse{Pst@WorldMap@ombre#1}}
+\psset{daynight=false}
+%
\def\WorldMapThreeD{\pst@object{WorldMapThreeD}}
\def\WorldMapThreeD@i{\@ifnextchar[{\WorldMapThreeD@do}{\WorldMapThreeD@do[]}}
\def\WorldMapThreeD@do[#1]{{%
\psset{#1}%
-\begin@ClosedObj
+\begin@ClosedObj%
\addto@pscode{%
- /increment \psk@WorldMap@increment\space def
- \geo@variablesIIID
- (\psk@WorldMap@Path/river.dat) run
- (\psk@WorldMap@Path/pisland.dat) run
- (\psk@WorldMap@Path/pborder.dat) run
- (\psk@WorldMap@Path/plake.dat) run
+ /increment \psk@WorldMap@mapgriddiv\space def
+ \variablesTroisD
+ /mapcolor {\pst@usecolor\psmapcolor currentrgbcolor} def
+ /bordercolor {\pst@usecolor\psbordercolor currentrgbcolor} def
+ /coastcolor {\pst@usecolor\pscoastcolor currentrgbcolor} def
+ /islandcolor {\pst@usecolor\psislandcolor currentrgbcolor} def
+ /maillagecolor {\pst@usecolor\psgridmapcolor currentrgbcolor} def
+ /oceancolor {\pst@usecolor\psoceancolor currentrgbcolor} def
+ /rivercolor {\pst@usecolor\psrivercolor currentrgbcolor} def
+ /wfraczoncolor {\pst@usecolor\pswfraczoncolor currentrgbcolor} def
+ /wmaglincolor {\pst@usecolor\pswmaglincolor currentrgbcolor} def
+ /ridgecolor {\pst@usecolor\psridgecolor currentrgbcolor} def
+ /transfrmcolor {\pst@usecolor\pstransfrmcolor currentrgbcolor} def
+ /trenchcolor {\pst@usecolor\pstrenchcolor currentrgbcolor} def
+ /circlecolor {\pst@usecolor\pscirclecolor currentrgbcolor} def
+ /circlewidth {\pst@number\pscirclewidth SLW} def
+ /circlesep \psk@WorldMap@circlesep\space def
+ /maillagewidth {\pst@number\psgridmapwidth SLW} def
+ /borderwidth {\pst@number\psborderwidth SLW} def
+ /coastwidth {\pst@number\pscoastwidth SLW} def
+ /wfraczonwidth {\pst@number\pswfraczonwidth SLW} def
+ /wmaglinwidth {\pst@number\pswmaglinwidth SLW} def
+ /ridgewidth {\pst@number\psridgewidth SLW} def
+ /longitude_meridien \psk@WorldMap@longitudeMeridien\space def
+ /meridienwidth {\pst@number\psmeridienwidth SLW} def
+ /meridiencolor {\pst@usecolor\psmeridiencolor currentrgbcolor} def
+ /latitude_parallel \psk@WorldMap@latitudeParallel\space def
+ /parallelwidth {\pst@number\psparallelwidth SLW} def
+ /parallelcolor {\pst@usecolor\psparallelcolor currentrgbcolor} def
+ /year \psk@WorldMap@A\space def
+ /month \psk@WorldMap@M\space def
+ /day \psk@WorldMap@J\space def
+ month 3 lt {/month month 12 add def /year year 1 sub def} if
+ /AA year 100 div truncate def
+ /BB 2 AA sub AA 4 div truncate add def
+ /CC 365.25 year mul truncate def
+ /DD 30.6001 month 1 add mul truncate def
+ /julien BB CC add DD add day add 1720994.5 add def
+ /hour \psk@WorldMap@hour\space def
+ /jours julien 2454367 sub def
+ /AngleRayonsSoleil latitude_parallel 23.5 sin 360 jours mul 365.25 div sin mul arccos sub def
+ /u1 0 def /u2 AngleRayonsSoleil cos def /u3 AngleRayonsSoleil sin def
+% /Julien jd hour 24 div add def
+ %
1 setlinejoin
0 0 translate
- /xunit {\pst@number\psxunit\space mul}def
- /yunit {\pst@number\psyunit\space mul}def
- /runit {\pst@number\psrunit\space mul}def
- gsave
- newpath
- 0.5 0.8 0.8 setrgbcolor
- % cercle vu par l'observateur
+ /pst@fill { \psk@opacityalpha .setopacityalpha fill } def
+ tx@map3DDict begin
+ MatriceTransformationZXY
+%
/RsphereScreen Rsphere DScreen mul Dobs div
1 Rsphere dup mul Dobs dup mul div sub sqrt div runit def
+%
+/GrandCercle {
+ % cercle vu par l'observateur
0 0 RsphereScreen 0 360 arc
closepath
- fill
+} def
+%
+\ifPst@WorldMap@visibility
+ /condition { 0 ge } def
+\else
+ /condition { 0 le } def
+\fi
+%
+\ifPst@WorldMap@ombre
+ the_night
+\fi
+%
+\ifPst@WorldMap@blueEarth
+ gsave
+ newpath
+ oceancolor
+ GrandCercle
+ pst@fill % fill
grestore
- /condition {PSfacette 0 le} def
- /departPhi -90 def
-tx@map3DDict begin
- MatriceTransformation
-/Draw {
- {
-CalculsPoints
-closepath
+\fi
+%
+\ifPst@WorldMap@circles
gsave
-Color setrgbcolor
-fill
+ oceans_seas_hatched
grestore
-stroke
-} forall
-}def
-%/Color {0.5 0.8 0.5} def
-/Color {\psk@WorldMap@Fillcolor} def
-border
- Draw
-islands
- Draw
-/Color {0.5 0.8 0.8} def
-lake
- Draw
-% les rivières
-\ifPst@WorldMap@Rivers % hv 2004-05-03
- /DrawRivers {
- { CalculsPoints
- 0 0 1 setrgbcolor
- stroke
- } forall
- }def
- river
- DrawRivers
\fi
+%
+\ifPst@WorldMap@border
+ (\psk@WorldMap@Path/pborder.dat) run
+gsave
+GrandCercle
+clip
+border dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ closepath
+ gsave
+ mapcolor
+ pst@fill % fill
+ grestore
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@island
+ (\psk@WorldMap@Path/pisland.dat) run
+gsave
+GrandCercle
+clip
+islands dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ closepath
+ gsave
+ mapcolor
+ pst@fill % fill
+ grestore
+ borderwidth
+ islandcolor
+ stroke
+ }forall
+grestore
+\fi
+ %
+\ifPst@WorldMap@france
+ (\psk@WorldMap@Path/france.dat) run
+gsave
+GrandCercle
+clip
+france dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ closepath
+ gsave
+ mapcolor
+ pst@fill % fill
+ grestore
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@Lake
+ (\psk@WorldMap@Path/plake.dat) run
+gsave
+GrandCercle
+clip
+lake dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ closepath
+ gsave
+ oceancolor
+ pst@fill % fill
+ grestore
+% borderwidth
+% bordercolor
+0 0 1 setrgbcolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@coasts
+ (\psk@WorldMap@Path/pcoast.dat) run
+gsave
+GrandCercle
+clip
+coasts dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ coastwidth
+ coastcolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@usa
+ (\psk@WorldMap@Path/usa.dat) run
+gsave
+GrandCercle
+clip
+usa dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@mexico
+ (\psk@WorldMap@Path/mex.dat) run
+gsave
+GrandCercle
+clip
+mexico dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@australia
+ (\psk@WorldMap@Path/aus.dat) run
+gsave
+GrandCercle
+clip
+australia dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@canada
+ (\psk@WorldMap@Path/canada.dat) run
+gsave
+GrandCercle
+clip
+canada dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ borderwidth
+ bordercolor
+ stroke
+ }forall
+grestore
+\fi
+%
+\ifPst@WorldMap@fraczon
+ (\psk@WorldMap@Path/wfraczon.dat) run
+GrandCercle
+clip
+wfraczon dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ wfraczoncolor
+ wfraczonwidth
+ stroke}forall
+\fi
+%
+\ifPst@WorldMap@maglin
+ (\psk@WorldMap@Path/wmaglin.dat) run
+GrandCercle
+clip
+wmaglin dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ wmaglincolor
+ wmaglinwidth
+ stroke}forall
+\fi
+%
+\ifPst@WorldMap@ridge
+ (\psk@WorldMap@Path/ridge.dat) run
+gsave
+GrandCercle
+clip
+ridge dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ ridgecolor
+ ridgewidth
+ stroke}forall
+grestore
+ (\psk@WorldMap@Path/transfrm.dat) run
+gsave
+GrandCercle
+clip
+transfrm dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ transfrmcolor
+ ridgewidth
+ stroke}forall
+grestore
+ (\psk@WorldMap@Path/trench.dat) run
+gsave
+GrandCercle
+clip
+trench dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ trenchcolor
+ ridgewidth
+ stroke}forall
+grestore
+\fi
+%
+\ifPst@WorldMap@Rivers
+ (\psk@WorldMap@Path/river.dat) run
+GrandCercle
+clip
+river dup /REGION exch def
+CompteurRegions
+{CalculsPointsRegion
+ rivercolor
+ stroke}forall
+\fi
+%
\ifPst@WorldMap@city
% les capitales
(\psk@WorldMap@Path/c-cap.dat) run
@@ -175,13 +607,190 @@ DrawCitys
citycapitals
DrawCitys
\fi
-\ifPst@WorldMap@maillage
-/maillageColor {\psk@WorldMap@maillageColor} def
+%
+\ifPst@WorldMap@gridmap
MaillageSphere
\fi
end}%
-\end@ClosedObj
+\end@ClosedObj}}
+% placer une ville en particulier
+% par sa longitude et sa latitude en degrés
+% si la ville n'est pas visible
+% elle est rejetée hors de l'écran
+\def\pnodeMapIIID{\pst@object{pnodeMapIIID}}
+\def\pnodeMapIIID@i(#1,#2)#3{%
+ \begin@SpecialObj%
+ \pnode( !
+ \variablesTroisD
+ tx@map3DDict begin
+ MatriceTransformationZXY
+ /Xpoint {#2 cos #1 cos mul Rsphere mul} def
+ /Ypoint {#2 cos #1 sin mul Rsphere mul} def
+ /Zpoint {#2 sin Rsphere mul } def
+ CalculsPointsAfterTransformations
+% CalcCoordinates
+% /YcoorCity exch def /XcoorCity exch def
+% Test
+% PS 0 ge %
+% {XcoorCity YcoorCity }
+% {/XcoorCity 1000 def /YcoorCity 1000 def}
+% ifelse
+formulesTroisD
+ Xi Yi end){#3}%
+ \end@SpecialObj%
+ \ignorespaces}%
+%
+% adaptation de \mapput de \pst-map2d}
+\define@key[psset]{pst-map3d}{mapCountry}{\edef\psk@WorldMap@mapCountry{#1}}
+\psset{mapCountry=all}
+\define@key[psset]{pst-map3d}{nodeWidth}{\edef\psk@WorldMap@nodeWidth{#1}}
+\psset{nodeWidth=1mm}
+\newpsstyle{psNodeMapStyle}{fillstyle=solid,fillcolor=red}
+\newpsstyle{NodeLabelStyle}{fillstyle=solid,fillcolor=yellow,framesep=0,linestyle=none}
+
+%
+\def\mapputIIID{\@ifnextchar[{\mapputIIID@i}{\mapputIIID@i[90]}}
+\def\mapputIIID@i[#1](#2,#3){\@ifnextchar[{\mapputIIID@iii[#1](#2,#3)}{\mapputIIID@ii[#1](#2,#3)}}
+\def\mapputIIID@ii[#1](#2,#3)#4{\mapputIIID@iii[#1](#2,#3)[#4]{#4}}
+\def\mapputIIID@iii[#1](#2,#3)[#4]#5{%
+ \@ifnextchar[{\mapputIIID@iv[#1](#2,#3)[#4]#5}{\mapputIIID@iv[#1](#2,#3)[#4]#5[\@empty]}}
+\def\mapputIIID@iv[#1](#2,#3)[#4]#5[#6]{{%
+% [angle](longitude,lattitude)[node name]{node label}[country]
+ \def\pst@tempb{all}
+ \ifx\pst@tempb\psk@WorldMap@mapCountry
+ \mapputIIID@v[#1](#2,#3)[#4]{#5}%
+ \else
+ \def\pst@tempb{#6}%
+% \typeout{Compare \pst@tempb{} with \psk@WorldMap@mapCountry}
+ \ifx\pst@tempb\psk@WorldMap@mapCountry
+ \mapputIIID@v[#1](#2,#3)[#4]{#5}
+ \fi%
+ \fi%
}}
+\def\mapputIIID@v[#1](#2,#3)[#4]#5{{%
+ \pnodeMapIIID(#2,#3){#4}
+% \typeout{Node: #4}
+ \pst@dima=\psk@WorldMap@nodeWidth
+ \pscircle[style=psNodeMapStyle](#4){\pst@dima}
+ \pscircle*(#4){0.5\pst@dima}
+ \uput{1.2\pst@dima}[#1](#4){\psframebox[style=NodeLabelStyle]{\sf#5}}%
+}}
+%
+% dessiner un méridien de longitude donnée
+% longitude en degrés
+\def\psmeridien{\pst@object{psmeridien}}
+\def\psmeridien@i#1{%
+ \pst@killglue
+ \begingroup
+ \begin@SpecialObj%
+ \addto@pscode{%
+ \variablesTroisD
+ /longitude_meridien #1 def
+ /meridienwidth {\pst@number\psmeridienwidth SLW} def
+ /meridiencolor {\pst@usecolor\psmeridiencolor currentrgbcolor} def
+ tx@map3DDict begin
+ MatriceTransformationZXY
+ \ifPst@WorldMap@visibility
+ /condition { 0 ge } def
+ \else
+ /condition { 0 le } def
+ \fi
+ meridien
+ end}%
+ \end@SpecialObj%
+ \endgroup%
+ \ignorespaces%
+}
%
+% dessiner un cercle parallèle à l'équateur de latitude donnée
+% latitude en degrés
+\def\psparallel{\pst@object{psparallel}}
+\def\psparallel@i#1{%
+ \pst@killglue
+ \begingroup
+ \begin@SpecialObj%
+ \addto@pscode{%
+ \variablesTroisD
+ /latitude_parallel #1 def
+ /parallelwidth {\pst@number\psparallelwidth SLW} def
+ /parallelcolor {\pst@usecolor\psparallelcolor currentrgbcolor} def
+ tx@map3DDict begin
+ MatriceTransformationZXY
+ \ifPst@WorldMap@visibility
+ /condition { 0 ge } def
+ \else
+ /condition { 0 le } def
+ \fi
+ Parallel
+ parallelwidth
+ parallelcolor
+ stroke
+ end}%
+ \end@SpecialObj%
+ \endgroup%
+ \ignorespaces%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% le dessin du globe tellure
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key[psset]{pst-map3d}{styleGlobe}{% style du globe
+\edef\psk@styleGlobe{#1}}
+
+\define@key[psset]{pst-map3d}{styleNight}{% style de la partie dans la nuit
+\edef\psk@styleNight{#1}}
+
+\newpsstyle{Globe}{circles=true}
+\newpsstyle{night}{fillstyle=solid,fillcolor=black,opacity=0.8}
+\psset[pst-map3d]{styleGlobe=Globe,styleNight=night}
+
+\def\psGlobeTellure{\pst@object{psGlobeTellure}}
+\def\psGlobeTellure@i(#1,#2)#3{% longitude, latitude et nom de la ville
+ \begin@SpecialObj%
+ \pnode(!/ux 0 def /uy 90 #2 sub sin def /uz 90 #2 sub cos def 0 0){ttt}%
+ \psset{THETA=0,PHI=0}%
+ {\psset{RotX=#2 90 sub,RotZ=90 #1 add}
+ \WorldMapThreeD[style=\psk@styleGlobe,daynight=false]%
+ \mapputIIID(#1,#2){#3}}%
+ \WorldMapThreeD[style=\psk@styleNight,daynight=true,circles=false,blueEarth=false,
+ borders=false,islands=false,
+ rivers=false,lakes=false,
+ gridmap=false,latitudeParallel=#2]%
+ \psframe*(! -3 \psk@TroisD@Radius\space neg -1.5 add)(!3 \psk@TroisD@Radius\space neg -0.5 add)
+ \rput(! 0 \psk@TroisD@Radius\space neg -1 add){\white\psk@WorldMap@hour h le \psk@WorldMap@J/\psk@WorldMap@M/\psk@WorldMap@A}
+ \end@SpecialObj%
+ \ignorespaces}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% épicentre d'un tremblement de terre
+% Earthquake Epicenters
+%
+\define@key[psset]{pst-map3d}{waves}{\edef\psk@WorldMap@waves{#1}}
+\psset{waves=3} % nombre de cercles concentriques
+\define@key[psset]{pst-map3d}{Rmax}{\edef\psk@WorldMap@Rmax{#1}}
+\psset{Rmax=1500} % rayon maximum du séisme en km
+
+\def\psepicenter{\pst@object{psepicenter}}
+\def\psepicenter@i(#1,#2)#3{%
+ \begin@SpecialObj%
+ \addto@pscode{%
+ \variablesTroisD
+ /longitude #1 def
+ /latitude #2 def
+ /nbre \psk@WorldMap@waves\space def
+ /dphi \psk@WorldMap@Rmax\space 0.008983 mul def
+ /circlecolor {\pst@usecolor\pscirclecolor currentrgbcolor} def
+ /circlewidth {\pst@number\pscirclewidth SLW} def
+ tx@map3DDict begin
+ circlecolor
+ circlewidth
+ nbre dphi longitude latitude
+ ondes
+ end}%
+ \mapputIIID(#1,#2){#3}
+ \end@SpecialObj%
+ \ignorespaces%
+}
\catcode`\@=\PstAtCode\relax
\endinput
diff --git a/Master/texmf-dist/tex/latex/pst-geo/pst-map3d.sty b/Master/texmf-dist/tex/latex/pst-geo/pst-map3d.sty
index 4094b6d8114..13fe0a7c877 100644
--- a/Master/texmf-dist/tex/latex/pst-geo/pst-map3d.sty
+++ b/Master/texmf-dist/tex/latex/pst-geo/pst-map3d.sty
@@ -2,5 +2,9 @@
\ProvidesPackage{pst-map3d}[2004/01/05 package wrapper for PSTricks pst-map3d.tex (hv)]
\input{pst-map3d.tex}
\ProvidesFile{pst-map3d.tex}
- [\filedate\space v\fileversion\space `PST-map3d' (mljm,hv)]
+ [\filedate\space v\fileversion\space `PST-map3d' (ml,jm,hv)]
+\IfFileExists{pst-map3d.pro}{%
+ \ProvidesFile{pst-map3d.pro}
+ [2008/03/22 v. 1.0, PostScript prologue file (ml)]
+\@addtofilelist{pst-map3d.pro}}{}%
\endinput