%!PS-Adobe-2.0 %%BoundingBox: 0 0 300 300 % specify the width and height for good placement /w 300 def /h 300 def /eye [ 1.3 -1.75 ] def (epsetup.inc) run % v A -> v rotated by A /rotate-vector { 1 dict begin /A exch def /v exch def /c A cos def /s A sin def [ v 0 get c mul v 1 get s mul sub v 0 get s mul v 1 get c mul add ] end } def /color [ [ 1 0 0 ] [ 0 0 1 ] ] def % faces[0] points towards positive z-axis /faces[ [[ 0.25 0.25 ] [ 1.25 0.25 ] [ 1.25 1.25 ] [ 0.25 1.25 ]] [[ -0.25 -0.25 ] [ -1.25 -0.25 ] [ -1.25 -1.25 ] [ -0.25 -1.25 ]] ] def % separated by x+y=0: perpendicular to [1 1] % spanned by [ 1 -1] /F [ 1 -1 ] def /N [ 1 1 ] def /A 0 def /dA 10 def { page-begin gsave A rotate % draw the separating line N 0 get eye 0 get mul N 1 get eye 1 get mul add 0 ge { /dx 3 def /dy 3 def }{ /dx -3 def /dy -3 def } ifelse gsave newpath F 0 get 3 mul F 1 get 3 mul moveto F 0 get -3 mul F 1 get -3 mul lineto dx dy lineto F 0 get 3 mul F 1 get 3 mul lineto closepath gsave 0.9 setgray fill grestore stroke grestore newpath 0 1 1 { /i exch def /f faces i get def f 3 get aload pop moveto f { aload pop lineto } forall closepath gsave color i get aload pop setrgbcolor fill grestore stroke } for grestore gsave currentlinewidth 2 mul setlinewidth newpath eye aload pop 0.075 0 360 arc stroke grestore page-end /A A dA add def /N N dA rotate-vector def } loop