\documentclass[a4paper]{article}
\usepackage[height=25cm,width=17cm]{geometry}
\usepackage[latin1]{inputenc}
\usepackage{pstricks,pst-xkey,pst-plot}
\makeatletter
\pst@addfams{pst-HSB}
\define@key[psset]{pst-HSB}{HueBegin}{\edef\PstParametricplotHSB@HueBegin{#1}}
\define@key[psset]{pst-HSB}{HueEnd}{\edef\PstParametricplotHSB@HueEnd{#1}}
\newif\ifPst@HSB
\define@key[psset]{pst-HSB}{HSB}[true]{\@nameuse{Pst@HSB#1}}
\psset[pst-HSB]{HueBegin=0,HueEnd=1,HSB=true}
\def\parametricplotHSB{\pst@object{parametricplotHSB}}
\def\parametricplotHSB@i#1#2#3{{ \begin@ClosedObj
\addto@pscode{ /t #1 def
/dt #2 t sub \psk@plotpoints\space div def
/t t dt sub def
/Counter 0 def
1 setlinejoin
\psk@plotpoints {
/t t dt add def
/Counter Counter 1 add def
#3
\pst@number\psyunit mul exch
\pst@number\psxunit mul exch
1 Counter eq { moveto currentpoint /OldY ED /OldX ED } {\ifPst@HSB /PointY exch def
/PointX exch def
Counter \psk@plotpoints\space div
\PstParametricplotHSB@HueEnd\space
\PstParametricplotHSB@HueBegin\space sub mul
\PstParametricplotHSB@HueBegin\space add
1 1 sethsbcolor
OldX OldY PointX PointY lineto lineto
stroke
PointX PointY moveto
/OldX PointX def /OldY PointY def
\else lineto \fi } ifelse
} repeat } \end@ClosedObj} \ignorespaces}
\makeatother
\title{Vos courbes aux couleurs de l'arc-en-ciel !}
\author{Denis GIROU, Manuel LUQUE}
\date{19-25 février 2003, révisé le 9 mai 2007}
\begin{document}
\maketitle
Cette commande \verb+\parametricplotHSB+, est dérivée de
\verb+\parametricplot+ du package \texttt{pst-plot} de Timothy Van Zand.
Elle en reprend l'essentiel.
Elle s'emploie comme celle de \verb+\parametricplot+, mais ne
supporte pas les options de style \verb+linestyle+. Par défaut le codage
\texttt{HSB=true} est activé, on alors une courbe qui déploie toutes les
couleurs de l'arc-en-ciel sur sa longueur.
Une nouvelle option : on peut choisir la couleur de début et la
couleur de la fin de la courbe avec les paramètres :
\verb+HueBegin=0,HueEnd=0.5+, par exemple ; les valeurs de
\texttt{H} étant choisies entre 0 et 1.
Avec l'option \texttt{HSB=false}, les options de couleurs classiques
redeviennent opérantes.
Le nombre de points se fixe avec le paramètre : \texttt{plotpoints=1000}
\begin{verbatim}
\begin{pspicture}(0,-4.5)(10,4.5)
\psgrid(0,-4)(10,4)
\psset{plotpoints=300}
\parametricplotHSB[linewidth=1mm,HSB=false,linecolor=red]{0}{360}
{t t 36 div t sin 4 mul}
\parametricplotHSB[linewidth=1mm]{0}{360}{t t 36 div t cos 4 mul}
\end{pspicture}
\end{verbatim}
\begin{center}
\begin{pspicture}(0,-5)(10,5)
\psgrid(0,-4)(10,4)
\psset{plotpoints=300} \parametricplotHSB[linewidth=5mm,HSB=false,linecolor=red]{0}{360}
{t t 36 div t sin 4 mul}
\parametricplotHSB[linewidth=5mm]{0}{360}{t t 36 div t cos 4 mul}
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}(0,-5)(10,5)
\psgrid(0,-4)(10,4)
\psset{plotpoints=300} \parametricplotHSB[linewidth=1mm,HueBegin=0,HueEnd=0.5]{0}{360}
{t t 36 div t sin 4 mul}
\parametricplotHSB[linewidth=1mm,HueBegin=0.5,HueEnd=0.7]{0}{360}
{t t 36 div t cos 4 mul}
\parametricplotHSB[linewidth=1mm,HueBegin=0.8,HueEnd=1]{0}{360}
{t t 36 div t sin 2 mul}
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}(-5,-5)(5,5)
\psframe*[linecolor=lightgray](-5,-4)(5,4)
\psgrid[gridlabels=0,subgriddiv=0](-5,-4)(5,4)
\multido{\nxDiv=-5+0.2}{50}{ \psline(\nxDiv,-.1)(\nxDiv,0.1)}
\multido{\nyDiv=-4.0+0.2}{40}{ \psline(-0.1,\nyDiv)(0.1,\nyDiv)}
\psset{linewidth=1mm} \parametricplotHSB[plotpoints=1000,linecolor=blue,HSB=false,yunit=0.5]{-5}{5}{ t
/temps t 2e-3 mul def
/frequence2 100 def
frequence2 360 mul temps mul cos
1 mul 3 add
}
\parametricplotHSB[plotpoints=10000,yunit=1]{-5}{5}{ t
/temps t 2e-3 mul def
/frequence1 1200 def
/frequence2 100 def
frequence2 360 mul temps mul cos
1 mul 3 add
frequence1 360 mul temps mul cos
4 mul
mul
0.1 mul
}
\end{pspicture}
\end{center}
\end{document}