%! /page-begin { gsave /S 72 def S dup scale 2 S div setlinewidth 6 5 translate } def /page-end { grestore showpage } def (ps3d.inc) run /A 0 def /dA 10 def /N 32 def /dT 360 N div def [ 0 0 6 1] set-eye -1 -1 0 translate3d 100 { page-begin gsave3d -1 0 0 translate3d [0 1 0] A rotate3d 1 0 0 translate3d % draw circle centred at -1 -1 -1, radius 1, in plane x = -1 % parametrization t -> (-1, -1, -1) + [0, cos(T), sin(T)] /T 0 def newpath -1 -1 T cos add -1 T sin add moveto3d N { /T T dT add def -1 -1 T cos add -1 T sin add lineto3d } repeat stroke grestore3d newpath 0 0 0 moveto3d 1 0 0 lineto3d gsave 1 0 0 setrgbcolor stroke grestore newpath 0 0 0 moveto3d 0 1 0 lineto3d gsave 0 1 0 setrgbcolor stroke grestore newpath 0 0 0 moveto3d 0 0 1 lineto3d gsave 0 0 1 setrgbcolor stroke grestore page-end /A A dA add def } repeat