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