%%
%% This is file `pst-map3dII.tex',
%%
%% IMPORTANT NOTICE:
%%
%% Package `pst-map3dII.tex'
%%
%% Manuel Luque <Mluque5130@aol.com> (France)
%% Giuseppe Matarazzo  <joematara@hotmail.com> (Italy)
%% Herbert Voss  <voss@perce.de> (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
