--- /dev/null
+\documentclass[12pt]{article}
+\usepackage{pst-anamorphosis-add,pst-plot,pst-grad}
+\usepackage[a4paper]{geometry}
+
+\makeatletter
+\def\psparametricplotA{\pst@object{parametricplotA}}% hv 2008-11-22
+\def\parametricplotA{\pst@object{parametricplotA}}
+\def\parametricplotA@i#1#2{\@ifnextchar[{\parametricplotA@x{#1}{#2}}{\parametricplotA@x{#1}{#2}[]}}
+\def\parametricplotA@x#1#2[#3]{\@ifnextchar[{\parametricplotA@xi{#1}{#2}[#3]}{\parametricplotA@xi{#1}{#2}[#3][]}}
+\def\parametricplotA@xi#1#2[#3][#4]#5{%
+ \pst@killglue%
+ \begingroup%
+ \use@par%
+ \@nameuse{beginplot@\psplotstyle}%
+ \addto@pscode{%
+ \tx@optionsanamorphosis
+ \tx@optionsanamorphosisAdd
+ #3 %prefix PS code
+ \psplot@init
+ /t #1 def
+ /t1 #2 def
+ /dt t1 t sub \psk@plotpoints div def
+ /F@pstplot \ifPst@algebraic (#5)
+ \ifx\psk@PlotDerivative\@none\else
+ \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
+ \fi\space
+ tx@AlgToPs begin AlgToPs end cvx
+ \else { #5 } \fi def
+ \ifPst@VarStep
+ /StillZero 0 def /LastNonZeroStep dt def
+ /F2@pstplot tx@Derive begin (#5) (t) Derive (t) Derive end
+ \ifx\psk@PlotDerivative\@none\else
+ \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
+ \fi\space
+ tx@AlgToPs begin AlgToPs end cvx def
+ %% computation of the tolerance defined by plotpoints
+ /epsilon12 \ifx\psk@VarStepEpsilon\@default
+ tx@Derive begin F2@pstplot end Pyth
+ dt 3 exp abs mul
+ \else\psk@VarStepEpsilon\space 12 mul \fi def
+ /ComputeStep {
+ dup 1e-4 lt
+ { pop StillZero 2 ge { LastNonZeroStep 2 mul } { LastNonZeroStep } ifelse /StillZero StillZero 1 add def }
+ { epsilon12 exch div 1 3 div exp /StillZero 0 def }
+ ifelse } bind def
+ \fi
+ /xy {
+ \ifPst@algebraic F@pstplot \else #5 \fi
+ \pst@number\psyunit mul exch
+ \pst@number\psxunit mul exch
+ tx@anamorphosisPathDict begin Anamorphose end
+ } def
+ }%
+ \gdef\psplot@init{}%
+ \@pstfalse
+ \@nameuse{testqp@\psplotstyle}%
+ \if@pst\parametricplotA@ii{#4}\else\parametricplotA@iii{#4}\fi
+ \endgroup%
+ \ignorespaces}
+%
+\def\parametricplotA@ii#1{% para is the post code
+ \ifPst@VarStep%
+ \addto@pscode{%
+ mark xy \@nameuse{beginqp@\psplotstyle}
+ { F2@pstplot Pyth ComputeStep
+ t 2 copy add dup t1 gt {pop t1} if /t exch def F2@pstplot Pyth ComputeStep
+ /t 3 -1 roll def 2 copy gt { exch } if pop
+ /t t 3 -1 roll add dup t1 gt {pop t1} if def
+ xy \@nameuse{doqp@\psplotstyle}
+ t t1 eq { exit } if } loop}%
+ \else\pst@killglue%
+ \addto@pscode{%
+ /ps@Exit false def
+ xy \@nameuse{beginqp@\psplotstyle}
+ \psk@plotpoints 1 sub {
+ /t t dt add def
+ xy \@nameuse{doqp@\psplotstyle}
+ ps@Exit { exit } if
+ } repeat
+ ps@Exit not {
+ /t t1 def
+ xy \@nameuse{doqp@\psplotstyle}
+ } if
+ }%
+ \fi%
+ \addto@pscode{ #1 }%
+ \@nameuse{endqp@\psplotstyle}}
+%
+\def\parametricplotA@iii#1{%
+ \ifPst@VarStep%
+ \addto@pscode{%
+ /n 2 def
+ mark
+ { xy n 2 roll F2@pstplot Pyth
+ ComputeStep t 2 copy add dup t1 gt {pop t1} if
+ /t exch def F2@pstplot Pyth ComputeStep
+ /t 3 -1 roll def 2 copy gt { exch } if pop
+ /t t 3 -1 roll dup /LastNonZeroStep exch def add dup t1 gt {pop t1} if def /n n 2 add def
+ t t1 eq { exit } if } loop
+ xy n 2 roll}%
+ \else\pst@killglue%
+ \addto@pscode{
+ mark
+ /n 2 def
+ \psk@plotpoints {
+ xy
+ n 2 roll
+ /n n 2 add def
+ /t t dt add def
+ } repeat
+ /t t1 def
+ xy
+ n 2 roll}%
+ \fi%
+ \addto@pscode{ #1 }%
+ \@nameuse{endplot@\psplotstyle}}
+%
+\makeatother
+\begin{document}
+\begin{center}
+\begin{pspicture}(-6,-6)(6,6)
+\pscircle[doubleline=true]{3}
+\psset{type=conical}
+\parametricplot[plotpoints=3600,linecolor=red,linewidth=0.5mm]{0}{360}{%
+ /Radius 0.75 t 4 mul cos mul def
+ Radius t cos mul 1 add
+ Radius t sin mul
+ }
+\parametricplotA[plotpoints=3600,linecolor=red,linewidth=0.5mm]{0}{360}{%
+ /Radius 0.75 t 4 mul cos mul def
+ Radius t cos mul 1 add
+ Radius t sin mul
+ }
+\parametricplot[plotpoints=3600,linecolor=blue,linewidth=0.5mm]{0}{360}{%
+ /Radius 1 t 5 mul cos mul def
+ Radius t cos mul -1.25 add
+ Radius t sin mul
+ }
+\parametricplotA[plotpoints=3600,linecolor=blue,linewidth=0.5mm]{0}{360}{%
+ /Radius 1 t 5 mul cos mul def
+ Radius t cos mul -1.25 add
+ Radius t sin mul
+ }
+\parametricplot[plotpoints=3600,fillstyle=solid,fillcolor=green!50]{0}{360}{%
+ /Radius 1 t 2 mul sin t 6 mul sin 4 div add mul def
+ Radius t cos mul
+ Radius t sin mul 1.5 add
+ }
+\parametricplotA[plotpoints=3600,fillstyle=solid,fillcolor=green!50]{0}{360}{%
+ /Radius 1 t 2 mul sin t 6 mul sin 4 div add mul def
+ Radius t cos mul
+ Radius t sin mul 1.5 add
+ }
+\parametricplot[plotpoints=3600,fillstyle=gradient,gradend=yellow,gradbegin=white]{0}{360}{%
+ /Radius 1 t cos 3 exp mul def
+ Radius t sin mul 0 add
+ Radius t cos mul 1 add neg
+ }
+\parametricplotA[plotpoints=3600,fillstyle=gradient,gradbegin=yellow,gradend=white]{0}{360}{%
+ /Radius 1 t cos 3 exp mul def
+ Radius t sin mul 0 add
+ Radius t cos mul 1 add neg
+ }
+{\psset{linewidth=0.5\pslinewidth,linecolor={[rgb]{1 0.75 0}}}
+\multido{\n=0.25+0.25,\N=0.25+0.25}{9}{%
+ \pnode(! \n\space -2.25){A}
+ \pnode(! \n\space 2.25){B}
+ \psline(A)(B)
+ \pslineA(A)(B)
+ \pnode(!-2.25 \N){A}
+ \pnode(!2.25 \N){B}
+ \pslineA(A)(B)
+ \psline(A)(B)
+ }
+\multido{\n=-2.25+0.25,\N=-2.25+0.25}{9}{%
+ \pnode(! \n\space -2.25){A}
+ \pnode(! \n\space 2.25){B}
+ \psline(A)(B)
+ \pslineA(A)(B)
+ \pnode(!-2.25 \N){A}
+ \pnode(!2.25 \N){B}
+ \pslineA(A)(B)
+ \psline(A)(B)
+ }
+\psline(-2.25,0)(2.25,0)
+\psline(0,-2.25)(0,2.25)
+\pslineA(0,-2.25)(0,-0.25)
+\pslineA(0,2.25)(0,0.25)
+\pslineA(-2.25,0)(-0.25,0)
+\pslineA(2.25,0)(0.25,0)}
+\psdot[dotstyle=x,dotsize=.2](0,0)
+\end{pspicture}
+\end{center}
+\end{document}
\ No newline at end of file