Implementation of the 1D cellular automata (CA) with the extension to 2D, where time becomes Y coordinate and each row represents one generation of the CA.
Why
Find the visual aesthetic of this algorithm self-sufficient and interesting.
It can be used for anything, as long as system properties and goals (especially visual) could be mapped onto a texture.
Details
Common
The radius of neighbor lookup is fixed and equals 1.
The evaluation method determines how the state of the cell on the next generation will be evaluated:
Anisotropic: transition depends on the state of each cell and on the alignment to each other, i.e. (1, 1, 0) != (0, 1, 1)
Totalistic: transition depends only on the average sum of the states of each cell, i.e. (1, 2, 0) == (2, 0, 1) and etc
Initial Conditions
Generates an initial state for CA by filling the top row of the texture based on the selected method.
Mostly suitable for the CA with the number of states <= 3.
The idea was borrowed from NKS Explorer app.
It is also applicable for CA with the number of states > 3, but some degree of accuracy may be lost.
Number Based Rule Table
Generates a rule table based on numeric (serves as a rule) and the number of states, where the number of states is used as a base for the numeric system in which the rule will be converted.
The rule has a long type in order to handle big numbers, but Mixture currently does not support this type of node, that why it is not possible to use a rule as a parameter.
I left space for other types of rule table generation by making a base class for this node. For example, it can be a string representation of the rule or random generation based on Langton's Lambda parameter.
History Stack
Generates a time evolution history of CA based on the initial state, where each row represents one evolution step and the number of steps is equal to the height of the texture.
It supports two time modes:
Fixed: the number of steps is fixed and equal to the texture height (height - 1 to be more precise)
Periodic: the number of steps formally is not restricted (limited only by int overflow), and CA grows by shifting the whole history and writing a new generation to the last row. Mostly suitable for the Realtime Mixture graph.
On each step rule table applies to the current row in the stack and the result is written to the next empty row.
The time flows from top to bottom.
Output
What else
added examples including static and real-time graphs
my fantasy was over on the MenuNodeItem category naming, so, I decided to simply follow the table of contents of "The Computational Beauty of Nature" book🤠
What
Implementation of the 1D cellular automata (CA) with the extension to 2D, where time becomes Y coordinate and each row represents one generation of the CA.
Why
Find the visual aesthetic of this algorithm self-sufficient and interesting. It can be used for anything, as long as system properties and goals (especially visual) could be mapped onto a texture.
Details
Common
The radius of neighbor lookup is fixed and equals 1. The evaluation method determines how the state of the cell on the next generation will be evaluated:
(1, 1, 0) != (0, 1, 1)
(1, 2, 0) == (2, 0, 1) and etc
Initial Conditions
Generates an initial state for CA by filling the top row of the texture based on the selected method. Mostly suitable for the CA with the number of states <= 3. The idea was borrowed from NKS Explorer app.
It is also applicable for CA with the number of states > 3, but some degree of accuracy may be lost.
Number Based Rule Table
Generates a rule table based on numeric (serves as a rule) and the number of states, where the number of states is used as a base for the numeric system in which the rule will be converted.
The rule has a
long
type in order to handle big numbers, but Mixture currently does not support this type of node, that why it is not possible to use a rule as a parameter.I left space for other types of rule table generation by making a base class for this node. For example, it can be a string representation of the rule or random generation based on Langton's Lambda parameter.
History Stack
Generates a time evolution history of CA based on the initial state, where each row represents one evolution step and the number of steps is equal to the height of the texture.
It supports two time modes:
Output
What else
MenuNodeItem
category naming, so, I decided to simply follow the table of contents of "The Computational Beauty of Nature" book🤠