Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hexagon6/wave

A multi-state two dimensional cellular automaton to simulate excitable medium (and more)
https://github.com/hexagon6/wave

Last synced: about 1 month ago
JSON representation

A multi-state two dimensional cellular automaton to simulate excitable medium (and more)

Awesome Lists containing this project

README

        

wave: A multi-state two dimensional cellular automaton to simulate excitable medium (and more)
==============================================================================================

[![Wave](wave.png)](https://waves.fet.li)

Author: Tobi Turing

This repo contains a web-based editor to play around with cellular automatons.
Originally born from the idea to implement a tristate cellular automaton using the Greenberg-Hastings algorithm.
This CA can be used to simulate excitable medium (aka "waves").

Over time I have added different algorithms such as Game of Life and my own based on random neighborhood.

There are multiple parameters which can be tweaked, such as:

* algorithms:
* GH: Greenberg-Hastings (default algo)
* TT: Tobi Turing (similar to GH, but with random neighborhood)
* GoL: Inspired by conway's game of life which by default uses 2 states, but more can be used.
* states:
* 2 state (used for GoL), 0 represents a dead cell, 1 a cell which is alive
* 3 state (used for GH), 0 is the media in resting state, 1 excited, 2 refractoring
* 4+ state (just for fun, try to play with this)
* neighborhood:
* von Neumann (4 neighbors, in direct cardinal direction)
* Moore (8 neighbors, direct and diagonal)
* Combination of von Neumann and Moore (alternates mode between cycles)
* random (actually Moore, but neighbours are chosen randomly)
* Note: neighborhood has a radius attribute, which expands the reach, 1 is default
* level of detail:
* this parameter defines how many cells are simulated, depending on your hardware it might be really slow:
* 1 means 4 cells, so 2^(2*1)
* 2 means 16 cells, so 2^(2*2)
* n means 2^(2n)
* 9 -> 262144 cells might be to much for most CPUs, so by default we use 4 -> 256 fields, this works well even with portable phones

The matrix canvas is always initiated to have a multiple of 2^2n cells so minimal visual smoothing happens.

Enjoy!