Functional PostScript Examples
This program "morphes" a square to a circle in n steps. It demonstrates
the use of tangent-arc procedure and the dash attribute.
[PostScript Output]
(define square-to-circle
(let ((draw-one (lambda (r c)
(let ((a (tangent-arc (pt 36 0) (pt 36 36) (pt 0 36) r)))
(stroke (close-path (link a
(rotate 1/2pi a)
(rotate pi a)
(rotate 3/2pi a)))
(:color c)
(:line-width 3)
(:dash-pattern '#(4 3)))))))
(lambda (n)
(translate (inch 1) (inch 5)
(let ((c-step (/ 1 n))
(r-step (/ 36 n))
(h-step (/ (inch 8) n)))
(let lp ((n n) (r 36) (c (rgb 1 0 0)))
(if (= n 0)
the-empty-pict
(compose (draw-one r c)
(translate h-step 0
(lp (- n 1)
(- r r-step)
(rgb (- (rgb:r c) c-step)
(+ (rgb:g c) c-step)
0)))))))))))
FPS Examples: Right-angle Fractal | Arrow Fractal | Headlines | Clipping Message | Turkey Bitmap | Sun | Bounding Box | Morphing Square to Circle | Text Along a Circle | Demo Driver