On Sun, 18 Jul 2004, thewade wrote:
Both examples are based on GridFlow's powerful [@convolve] object.
I used to know how convolution works but Ive forgotten. Could you remind me? (by the way, GEM has a [pix_convolve] object as well) If I remember correctly, convolution traverses a two-dimentional array of numbers, and multiplies thoes numbers and their adjacent values by some lesser dimentioned array...
yes, that's how it works.
...Im an artist/computer science major and I only remember this (proabably flawed) bit if information from a cognitive science class where they were using convolution as edge detection for robotic vision.
Convolution with only positive numbers is a blur effect; convolution with mixed positive/negative acts as various kinds of edge detectors;
the game-of-life is equivalent to a blur coupled with some kind of double-thresholding, but I wouldn't quite know how to make one with GEM. See if you can duplicate the one in GridFlow; and then I don't know how fast GEM's convolution will be, compared to GridFlow's.
In general you can shortcut a convolution by using the fact that:
fft(A conv B) = fft(A) * fft(B)
but, in the case of game-of-life, there is something else than just a convolution, and that thing is not easily expressible in frequency domain (or: if it can, I really want to hear about it!!!) so you can't shortcut game-of-life.
Mathieu Bouchard http://artengine.ca/matju