%% $Id: pst-thick.tex 170 2009-12-08 21:30:53Z herbert $
%%
%% This is file `pst-thick.tex',
%%
%% IMPORTANT NOTICE:
%%
%% Package `pst-thick.tex'
%%
%% MAnuel Luque 
%% Herbert Voss 
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory CTAN:/macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%%   `pst-mirror' is a PSTricks package to view objects ob a spherical sphere
%%
%%
%
\ifx\PSTPlotLoaded\endinput\else\input pst-plot.tex\fi
\ifx\PSTNodeLoaded\endinput\else\input pst-node.tex\fi
\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex\fi
%
\def\fileversion{1.0}
\def\filedate{2009/12/08}
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax

\definecolor{darkgreen}{cmyk}{1,0,1,0.5}
\newpsstyle{vide}{fillstyle=none}
\newpsstyle{thickline}{fillstyle=solid,fillcolor=red!25,linecolor=red,plotpoints=360}
\newpsstyle{onlythecurvered}{linecolor=red,plotpoints=360}
\newpsstyle{onlythecurveblue}{linecolor=blue,plotpoints=360}
\newpsstyle{thicklineblue}{fillstyle=solid,fillcolor=blue!25,linecolor=blue,plotpoints=360}
\newpsstyle{rainbow}{fillstyle=ccslopes,linecolor=red,plotpoints=360}
\newpsstyle{solide}{fillstyle=solid,fillcolor=black,plotpoints=360}
\newpsstyle{serpent}{fillstyle=gradient,gradbegin=darkgreen,gradend=yellow,gradmidpoint=0,linecolor=green,gradangle=90,plotpoints=360}
\newpsstyle{default}{}% lignes noires, rien à l'intérieur

\pst@addfams{pst-thick}
%
\define@key[psset]{pst-thick}{E}[1]{\def\psk@thick@E{#1}}
\define@key[psset]{pst-thick}{K}[0]{\def\psk@thick@K{#1}}% K=0 => angle de rotation/normale à la courbe
\define@key[psset]{pst-thick}{stylethick}[thickline]{\def\psk@thick@stylethick{#1}}% style
\define@key[psset]{pst-thick}{stylecurve1}[onlythecurvered]{\def\psk@thick@stylecurveA{#1}}% style
\define@key[psset]{pst-thick}{stylecurve2}[onlythecurvered]{\def\psk@thick@stylecurveB{#1}}% style
\psset[pst-thick]{E=1,K=0,stylethick=thickline,stylecurve1=onlythecurvered,stylecurve2=onlythecurvered}

\define@boolkey[psset]{pst-thick}[Pst@]{curveonly}[true]{}
\psset[pst-thick]{curveonly=false}

\SpecialCoor

\def\CalculsCurves{%
    /ds dx dup mul dy dup mul add sqrt def
    /dx dx ds div def
    /dy dy ds div def
    /dx' K cos dx mul K sin dy mul sub def
    /dy' K sin dx mul K cos dy mul add def
    /nx E 2 div dy' mul neg def % normale x
    /ny E 2 div dx' mul def % normale y
    /x1 x0 nx add def
    /y1 y0 ny add def
      x1 y1 }

\def\psthick{\pst@object{psthick}}%
\def\psthick@i#1#2#3{{%
  \use@par
  \ifPst@curveonly
    \parametricplot[style=\psk@thick@stylecurveA]{#1}{#2}{%
      /E \psk@thick@E\space def /K \psk@thick@K\space def
      #3 \CalculsCurves }%
    \parametricplot[style=\psk@thick@stylecurveB]{#2}{#1}{%
      /E \psk@thick@E\space def
      /K \psk@thick@K\space def
      #3 
      /ds dx dup mul dy dup mul add sqrt def
      /dx dx ds div def
      /dy dy ds div def
      /dx' K cos dx mul K sin dy mul sub def
      /dy' K sin dx mul K cos dy mul add def
      /nx E 2 div dy' mul neg def % normale x
      /ny E 2 div dx' mul def % normale y
      x0 nx add y0 ny add  }
  \else
    \pscustom[style=\psk@thick@stylethick]{%
      \parametricplot{#1}{#2}{%
        /E \psk@thick@E\space def
        /K \psk@thick@K\space def
        #3 \CalculsCurves }%
      \parametricplot{#2}{#1}{ #3 \CalculsCurves }
      \closepath
     }
   \fi}\ignorespaces}

\def\fonctionSinus#1#2{%
    /P #1 def % période (10 unités)
    /A #2 def % amplitude
    /O 360 P div def % pulsation 2*pi/P
    /x0 t def
    /y0 t O mul sin A mul def % A*sin(O*t)
    /dx dt def
    /dy t dt add O mul sin
        t O mul sin
        sub
        A mul def }

\catcode`\@=\PstAtCode\relax
\endinput
