# Primordial Particle Systems

A while back I was playing with Particle Life simulations. At that time, another video I came across was the following

Click here to read the paper “How a life-like system emerges from a simple particle motion law” that describes how it works in great detail.

For a simpler overview I recommend this page by Brian H that includes snippets of the source code that helped me get my version working.

My even (hopefully) simpler explanation is as follows;

1. Fill the simulation space with a bunch of particles.
2. Particles have settings for radius, alpha, beta and velocity.
– radius is how far around itself each particle can sense the other particles.
– alpha is the fixed rotation amount. Each particle turns by this amount each step of the simulation.
– beta is the proportional rotation. This is the amount the particle turns depending on its neighbor particles.
– velocity is how far the particles move forward each step.
3. Each particle maintains a heading which is the direction it is facing.
4. Each of the particles move by the following steps
– Count how many neighbor particles are within the radius
– Work out how many of them are to the left and right of the particle
– Turn towards the left or right with the larger count
– Move forward

That’s all there is. From those relatively local and simple steps you can get some nice cell like and amoeba like structures emerging.

More sample images in this gallery.

The following movie shows some example results created with the latest version of Visions of Chaos.

Here is another sample movie. This time using 2D metaballs so individual particles in close proximity to other particles merge into blobs.

Jason.

## 6 responses to “Primordial Particle Systems”

1. Anton says:

I’m following your works for a long time! You are doing very interesting things.

Could you please explain if you have any application of this approach?

• softologyblog says:

“Application of this approach”? I don’t understand what you are asking?

• Anton says:

For example, we use cellular automata for modelling the grain growing during thermal cooling in metal alloys. So I just wander if it is possible to apply your approach to simulate something in physics.

• softologyblog says:

OK, understood. I am not sure this has a use in physics. I tend to appreciate these for their emergence features of something interesting from simple parts.

2. Colin says:

I have a question tho, in which order does the particle rotate with the degrees of alpha and beta, does every particle rotate by alpha and then checks for neighbors and rotates by beta towards the major neighborhood, the other way around or even just one of these possibilities?

• softologyblog says:

This is how I do it.

Check for neighbors of all particles first. These counts are stored in each particles left and right properties.

Then to turn;

N:=particles[loop].left+particles[loop].right;
deltaphi:=particles[loop].alpha+particles[loop].beta*N*sign(particles[loop].right-particles[loop].left);