\documentclass{article} \usepackage[dvipsnames,svgnames]{pstricks} \usepackage{pst-node,pst-plot,pst-eucl} \usepackage{graphicx} \usepackage{pst-solides3d} \usepackage{multido} \usepackage[nomessages]{fp} \pagestyle{empty} \begin{document} \psset{unit=0.75} \psset{lightsrc=10 5 10,SphericalCoor,viewpoint=20 10 20,Decran=50} \def\myFigure{% \deffunction{F}(t){t cos 3.2 mul}{t sin 3.2 mul}{} \deffunction{G}(t){t 3 add cos 3 mul}{t 3 add sin 3 mul}{} \deffunction{H}(t){t cos 0.8 mul}{t sin 0.8 mul}{} \deffunction{I}(t){t 12 add cos 0.6 mul}{t 12 add sin 0.6 mul}{} \deffunction{J}(t){t cos 1.55 mul}{t sin 1.55 mul}{} \deffunction{K}(t){t 6 add cos 1.4 mul}{t 6 add sin 1.4 mul}{} \rput(5,-4){\psSolid[% object=ruban, h=0.7, fillcolor=red, incolor=lightgray, base=0 6 360 {/Angle exch def Angle F Angle G} for, ngrid=1, solidmemory=true, action=none, name=outer, ](0,0,0) \psSolid[% object=ruban, h=0.9, fillcolor=blue, incolor=gray, base=0 24 360 {/Angle exch def Angle H Angle I} for, ngrid=1, solidmemory=true, action=none, name=inner, RotZ=\ai\space 4 mul ](\ai\space cos 2.25 mul,\ai\space sin 2.25 mul,0) \psSolid[% object=ruban, h=0.3, fillcolor=green, incolor=gray, base=0 24 360 {/Angle exch def Angle H Angle I} for, ngrid=1, solidmemory=true, action=none, name=inner1, RotZ=\ai\space 4 mul ](\ai\space 180 add cos 2.25 mul,\ai\space 180 add sin 2.25 mul,0) \psSolid[% object=ruban, h=0.5, fillcolor=yellow, incolor=gray, base=0 12 360 {/Angle exch def Angle J Angle K} for, ngrid=1, solidmemory=true, action=none, name=inner2, RotZ=\ai\space 2 mul neg ](0,0,0) \psSolid[% object=fusion, base=inner1 inner2 inner outer, name=spiro, action=draw** ](0,0,0)% \composeSolid} } \FPdiv{\myDeltaA}{360}{90}% \def\ai{0}% \FPdiv{\myDeltaB}{360}{90}% \def\bi{0}% \multido{\i=1+1}{90}{ \begin{pspicture}(-4,-4)(4,4) \myFigure % \end{pspicture} \newpage \FPadd{\ai}{\ai}{\myDeltaA} \FPadd{\bi}{\bi}{\myDeltaB} } \end{document}