home *** CD-ROM | disk | FTP | other *** search
- From router!tut!draken!kth!mcvax!uunet!tut.cis.ohio-state.edu!mailrus!purdue!haven!umd5!cgs Sun Mar 12 11:43:34 EET 1989
- Article 30 of gnu.ghostscript.bug:
- Path: chyde!router!tut!draken!kth!mcvax!uunet!tut.cis.ohio-state.edu!mailrus!purdue!haven!umd5!cgs
- >From: cgs@umd5.umd.edu (Chris G. Sylvain)
- Newsgroups: gnu.ghostscript.bug
- Subject: Sample File (not short)
- Keywords: pyramid,'fractal'
- Message-ID: <4601@umd5.umd.edu>
- Date: 11 Mar 89 19:17:25 GMT
- Organization: University of Maryland, College Park
- Lines: 133
- [...]
- ----- Unsent message follows -----
- [...]
- %!
- % Pyramidal Fractal in PostScript
- %
- % Draws a 3-D pyramid fractal, as
- % seen in a popular text on Fractals
- %
- % Author: Curt.McDowell@andrew.cmu.edu
- % Carnegie-Mellon University
- %
- 72 72 scale
- % User-Adjustable Parameters:
- %
- % Adjust viewing angle by modifying alpha and beta.
- % The pyramid is originally seen level with the front edge.
- % It is then rotated around the Z axis by alpha
- % (front corner moving left), then around the Y (horizonal)
- % axis by beta (top corner moving away).
- /alpha -11 def /beta -10 def
- /shadeleft 0.95 def /shaderight 0.5 def
- /pagew 8.5 def /pageh 11 def
- /StartSize 1.6 def /MinSize 0.2 def
- 0 -1 translate
- /sina alpha sin def /sinb beta sin def
- /cosa alpha cos def /cosb beta cos def
- % Transformation from 3-D coordinates to 2-D
- /xform % x,y,z ==> x',y'
- { /zz exch def
- /yy exch def
- /xx exch def
- yy cosa mul xx sina mul sub
- pagew 2 div mul % Compute X and
- pagew 2 div add % leave on stack
- xx sinb mul cosa mul yy sina mul sinb mul
- add zz cosb mul add
- pageh 2 div mul % Compute Y and
- pageh 2 div add % leave on stack
- } def
- % Constants
- /sqr3o4 3 sqrt 4 div def
- /sqr3o2 3 sqrt 2 div def
- /sqr3o6 3 sqrt 6 div def
- /sqr6o3 6 sqrt 3 div def
- /sqr3o12 3 sqrt 12 div def
- /sqr6o6 6 sqrt 6 div def
- /pyramid % x,y,z,size ==> --
- { /size exch def /z exch def /y exch def /x exch def
- % (ax, ay) = Left bottom point
- x y z
- xform /ay exch def /ax exch def
- % (bx, by) = bottom front point
- sqr3o2 size mul x add size 2 div y add z
- xform /by exch def /bx exch def
- % (cx, cy) = Right bottom point
- x size y add z
- xform /cy exch def /cx exch def
- % (dx, dy) = top point
- sqr3o6 size mul x add size 2 div y add sqr6o3 size mul z add
- xform /dy exch def /dx exch def
- % Fill the 2 visible faces with different shades
- ax ay moveto bx by lineto dx dy lineto closepath
- shadeleft setgray fill
- cx cy moveto bx by lineto dx dy lineto closepath
- shaderight setgray fill
- % Draw the 5 visible segments
- 0 setgray 0.1 72 div setlinewidth
- ax ay moveto bx by lineto cx cy lineto dx dy lineto
- closepath dx dy moveto bx by lineto stroke
- } def
- % Recursive routine to build a pyramid out of subpyramids
- /buildsave { x y z size } def
- /buildrest { /size exch def /z exch def /y exch def /x exch def } def
- /build % x,y,z,size ==> --
- { /size exch def /z exch def /y exch def /x exch def
- size MinSize lt
- { buildsave
- x y z size pyramid
- buildrest
- }
- { buildsave
- x y z size 2 div build
- buildrest
- buildsave
- x size 2 div y add z size 2 div build
- buildrest
- buildsave
- sqr3o12 size mul x add size 4 div y add
- sqr6o6 size mul z add size 2 div build
- buildrest
- sqr3o4 size mul x add size 4 div y add
- z size 2 div build
- } ifelse
- } def
- 0 StartSize -2 div StartSize sqr6o6 mul -2 div StartSize build
- showpage
- --
- --==---==---==--
- .. And hast thou slain the Jabberwock? ..
- ARPA: cgs@umd5.UMD.EDU BITNET: cgs%umd5@umd2
- UUCP: ..!uunet!umd5.umd.edu!cgs
-