algorithmic mathematical art

verec verec at mac.com
Sun May 7 19:59:47 CEST 2006


On 2006-05-07 12:31:47 +0100, Frank Buss <fb at frank-buss.de> said:

>> anyway, today i ran into this page by Frank Buß
>> http://www.frank-buss.de/lisp/functional.html
>> which used the idea in the book to render a traditional Escher's tiling
>> piece.
> 
> I should note that I've used the original paper from Peter Henderson, which
> is cited in the book, too:
> 
> http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.html#footnote_Temp_202

A very simple change to the code allows it to run
on most platforms:

1. prefix Frank's code with:

(defvar *ps-file* "/Users/verec/workspace/pictures/eisher.ps")

where you replace the string literal with whatever hard coded path
is right for your platform.

2. change plot so that it reads:

(defun plot (p)
  " saves a picture as postscript and shows it"
  (with-open-file (s *ps-file*
                     :direction :output :if-exists :supersede)
    (format s "500 500 scale~%")
    (format s ".1 .1 translate~%")
    (format s "0 setlinewidth~%")
    (format s "0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto 0 0 lineto~%")
    (dolist (line (funcall p '(0 0) '(1 0) '(0 1)))
      (destructuring-bind ((x0 y0) (x1 y1)) line
        (format s "~D ~D moveto ~D ~D lineto~%" (float x0) (float y0) 
(float x1) (float y1))))
    (format s "stroke~%")
    (format s "showpage~%"))
#+nil  (sys:call-system "c:/gs/gs7.05/bin/gswin32.exe -g800x800 
c:/tmp/test.ps")
)

that is, the hard-coded path now refers to *ps-file*, and the
OS specific call is commented out.

3. evaluate:

(plot *fishes*)

The resulting file is a plain PS file. On OS X you can view
it with Preview, and even convert it to pdf if you so wish:

http://lisp.jfb-city.co.uk/misc/eisher.pdf
--
JFB




More information about the Python-list mailing list