Skip to content

Instantly share code, notes, and snippets.

@gingerbeardman
Last active July 10, 2019 20:01
Show Gist options
  • Save gingerbeardman/79d6df2ab08033a37f5eb23162fa6a4c to your computer and use it in GitHub Desktop.
Save gingerbeardman/79d6df2ab08033a37f5eb23162fa6a4c to your computer and use it in GitHub Desktop.
PostScript listing from page 16 of VERBUM issue 1.3 (Fall 1987)
{inHard Disk: Full Polys}
{ps}
/TurnXYZ
{ ax /mat1 mat0 store mat1 rotate transform 3 -1 roll
ay /mat1 mat0 store mat1 rotate transform 3 -1 roll
az /mat1 mat0 store mat1 rotate transform 3 -1 roll
} def
/DrawFace
{ Vertex face 3 get get aload pop TurnXYZ pop moveto
4 1 face length 1 sub
{Vertex face 3 -1 roll get get aload pop TurnXYZ pop lineto}
for
closepath
/angcos x px mul y py mul z pz mul add add size psize mul sqrt div def
angcos
1 add 2 div
dup 0 lt {pop 0} if
dup gsave setgray fill grestore
2 exp setgray stroke
/n n 1 add def
} def
/FindFace
{ /face exch def
face 0 get face 1 get face 2 get TurnXYZ
/z exch def /y exch def /x exch def
z lim gt {DrawFace} if
} def
/WhichFaces
{ /which exch def
which sizes length lt {/size sizes which get def} if
ranges which get 1 ranges which 1 add get 1 sub {solid exch get FindFace} for
} def
/FaceNos
{ gsave
/rad exch def
translate
rad rad scale
0 setlinewidth
/solid exch def
/faces solid length 3 sub def
/sets solid faces 1 add get def
/ranges [0 sets {1 index add} forall] def
/sizes solid faces 2 add get def
/multi sets length sizes length gt def
/n 0 def
multi {WhichFaces} {0 1 sets length 1 sub {WhichFaces} for} ifelse
grestore
} def
/lim 0.000001 def
/mat0 matrix def /mat1 6 array def
/px -1 def /py 1 def /pz 1 def /psize 3 def
/ax 0 def /ay 0 def /az 0 def
297 423 translate 0.84 dup scale -306 -396 translate 75 2 -1 atan {pop} setscreen 0.8 setgray
%statusdict begin 11.5 72 mul 9 72 mul 9 0 setpageparams end 18 18 translate
-18 -18 moveto -18 810 lineto 630 810 lineto 630 -18 lineto closepath clip fill
{inHard Disk:Logos:Coarse}
{ps}
gsave
63 -63 translate
/ang -30 def
45
{ Icosahedron 72 ang cos mul 72 ang sin mul 24 FaceNos
Dodecahedron -72 ang cos mul -72 ang sin mul 24 FaceNos
6 12 translate 1.03 dup scale /ang ang 24 add store
/ax ax 12 add store /ay ay 4 add store /az az 1 add store
} repeat
grestore
0 -18 moveto 0 0 9 270 180 arcn -18 0 lineto
-18 792 moveto 0 792 9 180 90 arcn 0 810 lineto
612 810 moveto 612 792 9 90 0 arcn 630 792 lineto
630 0 moveto 612 0 9 360 270 arcn 612 -18 lineto
1 setgray stroke
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment