Copyright 2000, Neal R. Wagner
Here is code in the Postscript language to generate the figure shown above. Exactly this code will produce the figure if it is sent to a Postscript printer.
Replacing just a few lines gives the more complicated picture:
%!PS-Adobe-2.0 %%BoundingBox: 0 0 320 320 %%EndComments /size 320 def /r {size 2 div 0.9 mul} def /depth 0 def /maxdepth 1 def /down {/depth depth 1 add def} def /up {/depth depth 1 sub def} def /eps {.03} def % width of the narrow part of rotor arm /del {.12} def % gap between rotors and puzzle /x1 {3 sqrt 3 div r mul} def /y1 {1 3 div r mul} def /y2 {2 3 div r mul} def /thirdminuseps {1 3 div eps sub r mul} def /thirdpluseps {1 3 div eps add r mul} def /oneminusdel {1 del sub r mul} def /y3 {oneminusdel dup mul thirdminuseps dup mul sub sqrt} def /theta {thirdminuseps y3 atan} def /wheel { % draw rotor -- assumes center at 0 0 newpath rand 2147483647 div 6 mul round 60 mul rotate 0 0 r 0 360 arc 1 setgray gsave fill grestore 0 setgray stroke 0 setgray newpath 0 1 2 { x1 y1 thirdminuseps -60 -150 arcn 0 0 thirdpluseps 30 90 arc 0 y2 thirdminuseps -90 -180 arcn 0 0 oneminusdel 90 theta add 150 theta sub arc 120 rotate } for closepath fill newpath % white dot r 0.785 mul 0 r 0.065 mul 0 360 arc 1 setgray fill 0 setgray } def /logo { gsave 1 3 div eps sub 1 3 div eps sub scale down depth maxdepth le { % add six smaller wheels gsave x1 1 3 div eps sub div y1 1 3 div eps sub div translate wheel logo grestore gsave 0 y2 1 3 div eps sub div translate wheel logo grestore gsave x1 1 3 div eps sub div neg y1 1 3 div eps sub div translate wheel logo grestore gsave x1 1 3 div eps sub div neg y1 1 3 div eps sub div neg translate wheel logo grestore gsave 0 y2 1 3 div eps sub div neg translate wheel logo grestore gsave x1 1 3 div eps sub div y1 1 3 div eps sub div neg translate wheel logo grestore } if up grestore } def 3 setlinewidth 31459 srand size 2 div dup translate wheel logo showpage
Old line number 2: %%BoundingBox: 0 0 320 320 New line number 2: %%BoundingBox: 0 0 600 600 Old line number 4: /size 320 def New line number 4: /size 600 def Old line number 7: /maxdepth 1 def New line number 7: /maxdepth 2 def Old next-to-last line: 3 setlinewidth New next-to-last line: 5 setlinewidth