June 7, 2007, 7:33 pm

I had been messing around with creating a platform for experimenting with extended rules for “life-like-automata”, and although the code seemed to work just allright. I was horrible slow at rendering, and I decided that the next step were to optimize the rendering / drawing.

Well one thing lead to another – and i decided to make a small applet, were the drawing routines were optimized. Using a bufferedImage and setting the pixels one by one. And then I found this cool algorithm, for 2d water (Link).

It simulates water rippling, by using to buffer arrays with heights, and using them to calculate the speed and hence the distribution of ripples. There are a nice description of the algorithm at the link mentioned above. The short story is that you get an heightmap, and are able to calculate the next iteration of heights using the last height map, then you switch the buffers and repeat the procedure. And in between you render the heightmap. Unfortunately I’m not familiar with any algorithms for shading an refraction, so i just draw the heights using a simple gradient.

But the effect is really nice anyway. I didn’t include the applet in this page, as it cpu-intensive. It iterates through every pixel at each iteration, and just keeps on iterating. the nice thing about it, is that the speed doesn’t depend on how many ripples / activity there is.

small

normal

large

ripple source code

June 1, 2007, 5:31 pm

Having played a bit with cellular automata’s – and looking at various other rulesets. I started to wonder what the result would be if every cell had i different ruleset, or just different types of cells interacting.

And what if there were mutations and sexes involved ?

Continue reading ‘Java life simulator’ »

May 30, 2007, 11:46 pm

As mentioned before I’ve made a one dimensional Cellular Automata(CA). And although it was intriguing they quickly became very predictive. Actually it was in two dimensions. As the a y-coordinate represented time, but since the states were only depending an the adjacent neighbor’s to the right or left its considered to be one-dimensional.

But they are not as fascinating as CA’s where you expand the neighborhood to include all the eight adjacent cells. That’s called the Moore Neighborhood.

Representing the time dimension. As the intersting part is the evolution of the system, representing time is essential. With a two-dimensional CA it has to be done using animations, and who doesn’t like blinking pixels. This makes CA’s makes even more fun. Continue reading ‘Cellular Automata II’ »

Tags:

Automata,

automaton,

Automatons,

cellular automaton,

CIimg,

cimg,

code,

conway,

EvoCell,

fun,

game of life,

Hack,

images,

java,

Moore Neighborhood,

neighborhood,

program,

SDL,

system,

video Category:

Automata,

Programming |

Comment