Mathematica programers, especially Michael Trott, have been doing
algorithmic mathematical art since the early 1990s. I started my
programing career with Mathematica in 1995, and since late 1990s i've
been searching for such work outside of Mathematica, but it is almost
non-existent. (maybe less than 10 cases that i know of, and most their
code do not capture the algorithmic nature of the rendered art.) The
one most prominent mention of it is in chapter 2 of the book Structure
and Interpretation of Computer Programs by Hal Abelson et al.
anyway, today i ran into this page by Frank Buß
which used the idea in the book to render a traditional Escher's tiling
I hope this will help the spread of algorithmic mathematical art. If
you find other algorithmic mathematical art, please let me know!
> The one most prominent mention of it is in chapter 2 of the book
> Structure and Interpretation of Computer Programs by Hal Abelson et al.
Thanks for the interesting book tip, it is available online:
> anyway, today i ran into this page by Frank Buß
> which used the idea in the book to render a traditional Escher's tiling
I should note that I've used the original paper from Peter Henderson, which
is cited in the book, too:
>> anyway, today i ran into this page by Frank Buß
>> which used the idea in the book to render a traditional Escher's tiling
> I should note that I've used the original paper from Peter Henderson, which
> is cited in the book, too:
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
that is, the hard-coded path now refers to *ps-file*, and the
OS specific call is commented out.
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:
thanks for the interesting links!
I sometimes dabble in computer art.
Nearest example of my stuff to hand are these:
Those images are based on a variant of the Newton-Raphson root finding
equation (and used on complex numbers - the pictures represents the
Argand plane, i.e. x => real, => imaginary).
I need to find more of my stuff and give it a proper home!
Oh, speaking of escher, try the following:
Turns out it's in Wolfram's book. Interesting looking.