On 2006-05-07 12:31:47 +0100, Frank Buss [EMAIL PROTECTED] 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
--
http://mail.python.org/mailman/listinfo/python-list