Primordial Particle Systems

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.

Primordial Particle Systems

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.

Primordial Particle Systems

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.

Primordial Particle Systems

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. 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?

      • 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.

      • 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. 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?

    • 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);
      particles[loop].heading:=particles[loop].heading+deltaphi;

Leave a comment