%% %% This is file `pst-map3dII.tex', %% %% IMPORTANT NOTICE: %% %% Package `pst-map3dII.tex' %% %% Manuel Luque (France) %% Giuseppe Matarazzo (Italy) %% Herbert Voss (Germany) %% %% May 09, 2004 %% %% 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-map3dII' is a PSTricks package to create geographical objects %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\fileversion{0.21} \def\filedate{2004/05/09} \message{`PST-mapThreeDII v\fileversion, \filedate\space (ML/GM/HV)} \csname PSTMapThreeDII\endcsname \let\PSTMapThreeDII\endinput % Require PSTricks \ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi % David Carlisle interface to the `keyval' package. \input pst-key.tex % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pstheader{map3dII.pro} \SpecialCoor % \define@key{psset}{path}{\edef\psk@WorldMap@Path{#1}} % chemin des données \setkeys{psset}{path=.} % \define@key{psset}{RotX}{\edef\psk@TroisD@RotX{#1}} % rotation autour de Ox en degrés \define@key{psset}{RotY}{\edef\psk@TroisD@RotY{#1}} % rotation autour de Oy en degrés \define@key{psset}{RotZ}{\edef\psk@TroisD@RotZ{#1}} % rotation autour de OZ en degrés \define@key{psset}{Radius}{\edef\psk@TroisD@Radius{#1}} % rayon de la sphère % \define@key{psset}{THETA}{\edef\psk@TroisD@Theta{#1}} \define@key{psset}{PHI}{\edef\psk@TroisD@Phi{#1}} \define@key{psset}{Dobs}{\edef\psk@TroisD@Dobs{#1}} \define@key{psset}{Decran}{\edef\psk@TroisD@Ecran{#1}} \setkeys{psset}{THETA=0,PHI=45,Dobs=20,Decran=25,Radius=5} % \setkeys{psset}{RotX=0,RotY=0,RotZ=0} % \define@key{psset}{increment}{\edef\psk@WorldMapII@increment{#1}} \setkeys{psset}{increment=10} % \define@key{psset}{level}{\edef\psk@WorldMapII@level{#1}}% hv 2004-05-05 \setkeys{psset}{level=5} % \def\variablesTroisD{% /RotX \psk@TroisD@RotX\space def /RotY \psk@TroisD@RotY\space def /RotZ \psk@TroisD@RotZ\space def /THETA \psk@TroisD@Theta\space def /PHI \psk@TroisD@Phi\space def /Rsphere \psk@TroisD@Radius\space def /Dobs \psk@TroisD@Dobs\space def /DScreen \psk@TroisD@Ecran\space def /step \psk@WorldMapII@level\space def }% % \newif\ifPst@WorldMap@capitals \define@key{psset}{capital}[false]{\@nameuse{Pst@WorldMap@capitals#1}} \setkeys{psset}{capital=false} % \newif\ifPst@WorldMap@city \define@key{psset}{city}[false]{\@nameuse{Pst@WorldMap@city#1}} \setkeys{psset}{city=false} % \newif\ifPst@WorldMap@maillage \define@key{psset}{maillage}[true]{\@nameuse{Pst@WorldMap@maillage#1}} \setkeys{psset}{maillage=true} % \newif\ifPst@WorldMapII@Rivers \define@key{psset}{rivers}[true]{\@nameuse{Pst@WorldMapII@Rivers#1}} \setkeys{psset}{rivers=true} % \newif\ifPst@WorldMapII@Borders \define@key{psset}{borders}[true]{\@nameuse{Pst@WorldMapII@Borders#1}} \setkeys{psset}{borders=true} % \newif\ifPst@WorldMap@Europe \define@key{psset}{europe}[true]{\@nameuse{Pst@WorldMap@Europe#1}} \setkeys{psset}{europe=true} % \newif\ifPst@WorldMap@Asia \define@key{psset}{asia}[false]{\@nameuse{Pst@WorldMap@Asia#1}} \setkeys{psset}{asia=false} % \newif\ifPst@WorldMap@Africa \define@key{psset}{africa}[false]{\@nameuse{Pst@WorldMap@Africa#1}} \setkeys{psset}{africa=false} % \newif\ifPst@WorldMap@namer \define@key{psset}{namer}[false]{\@nameuse{Pst@WorldMap@namer#1}} \setkeys{psset}{namer=false} % \newif\ifPst@WorldMap@samer \define@key{psset}{samer}[false]{\@nameuse{Pst@WorldMap@samer#1}} \setkeys{psset}{samer=false} % \newif\ifPst@WorldMapII@all% hv 2004-05-05 \define@key{psset}{all}[true]{% \setkeys{psset}{europe=true,asia=true,africa=true,namer=true,samer=true} } % \def\WorldMapThreeDII{\pst@object{WorldMapThreeDII}} \def\WorldMapThreeDII@i{\@ifnextchar[{\WorldMapThreeDII@do}{\WorldMapThreeDII@do[]}} \def\WorldMapThreeDII@do[#1]{{% \setkeys{psset}{#1}% \begin@ClosedObj \addto@pscode{% \variablesTroisD 1 setlinejoin 0 0 translate /increment \psk@WorldMapII@increment\space def /xunit {\pst@number\psxunit\space mul}def /yunit {\pst@number\psyunit\space mul}def /runit {\pst@number\psrunit\space mul}def gsave newpath 0.7 0.9 0.9 setrgbcolor % cercle vu par l'observateur /RsphereScreen Rsphere DScreen mul Dobs div 1 Rsphere dup mul Dobs dup mul div sub sqrt div runit def 0 0 RsphereScreen 0 360 arc closepath fill grestore /condition {PSfacette 0 le} def /departPhi -90 def tx@mapII3DDict begin MatriceTransformation /Draw { { CalculsPoints stroke } forall }def % /DrawRivers { { CalculsPoints gsave 0 0 1 setrgbcolor CLW 0.25 mul stroke grestore } forall } def % /DrawBdy { { CalculsPoints gsave 1 0 0 setrgbcolor stroke grestore } forall } def \ifPst@WorldMap@maillage MaillageSphere \fi \ifPst@WorldMap@Europe (\psk@WorldMap@Path/europe-cil.dat) run europe-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/europe-riv.dat) run europe-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/europe-bdy.dat) run europe-bdy DrawBdy \fi \fi % \ifPst@WorldMap@Africa (\psk@WorldMap@Path/africa-cil.dat) run africa-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/africa-riv.dat) run africa-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/africa-bdy.dat) run africa-bdy DrawBdy \fi \fi % \ifPst@WorldMap@Asia (\psk@WorldMap@Path/asia-cil.dat) run asia-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/asia-riv.dat) run asia-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/asia-bdy.dat) run asia-bdy DrawBdy \fi \fi % \ifPst@WorldMap@namer (\psk@WorldMap@Path/namer-cil.dat) run namer-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/namer-riv.dat) run namer-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/namer-bdy.dat) run (\psk@WorldMap@Path/namer-pby.dat) run namer-bdy DrawBdy namer-pby DrawBdy \fi \fi % \ifPst@WorldMap@samer (\psk@WorldMap@Path/samer-cil.dat) run samer-cil Draw \ifPst@WorldMapII@Rivers (\psk@WorldMap@Path/samer-riv.dat) run samer-riv DrawRivers \fi \ifPst@WorldMapII@Borders (\psk@WorldMap@Path/samer-bdy.dat) run samer-bdy DrawBdy \fi \fi % \ifPst@WorldMap@city % les capitales (\psk@WorldMap@Path/c-cap.dat) run 1.5 % rayon du point citycapitals DrawCitys % les autres villes (\psk@WorldMap@Path/c-sub.dat) run 0.5 % rayon du point CitySub DrawCitys \fi \ifPst@WorldMap@capitals % les capitales (\psk@WorldMap@Path/citycapitals.dat) run 1.5 citycapitals DrawCitys \fi end}% \end@ClosedObj }} % % \catcode`\@=\PstAtCode\relax \endinput