- //_1DCA_save_GIF by fbz written in Processing
- //generates an elementary cellular automata and saves it as an animated gif
- //get the gifAnimation processing library at http://extrapixel.github.io/gif-animation/
- import gifAnimation.*;
- GifMaker gifExport;
- int[] rules = { 0, 1, 1, 0, 1, 1, 1, 0 };
- int gen = 1; // Generation
- color on = color(255);
- color off = color(0);
- void setup() {
- size(61, 680); //width and length of the gif
- background(0);
- set(width-1, 0, on); //set the next to last pixel to white
- set(23, 0, on); //turn some more pixels on for the seed row
- set(42, 0, on);
- //set(7, 0, on);
- //set(38, 0, on);
- //set(28, 0, on);
- //set(46, 0, on);
- frameRate(15);
- gifExport = new GifMaker(this, "rule110_1.gif");
- gifExport.setRepeat(0); // make it an "endless" animation
- gifExport.setTransparent(255, 255, 255); //make white transparent
- gifExport.setDelay(1000/15); //divide by the frameRate
- }
- void draw() {
- // For each pixel, determine new state by examining current
- // state and neighbor states and ignore edges that have only
- // one neighbor
- for (int i = 1; i < width - 1; i++) {
- int left = get(i - 1, gen - 1); // Left neighbor
- int me = get(i, gen - 1); // Current pixel
- int right = get(i + 1, gen - 1); // Right neighbor
- if (rules(left, me, right) == 1) {
- set(i, gen, on);
- }
- }
- gifExport.addFrame(); //add a new frame to the gif
- gen++; // Increment the generation by 1
- if (gen > height - 1) { // If it reached the bottom of the screen,
- noLoop(); // stop the program
- gifExport.finish(); //write gif file to sketch folder
- }
- }
- // Implement the rules
- int rules(color a, color b, color c) {
- if ((a == on) && (b == on) && (c == on)) {
- return rules[0];
- }
- if ((a == on) && (b == on) && (c == off)) {
- return rules[1];
- }
- if ((a == on) && (b == off) && (c == on)) {
- return rules[2];
- }
- if ((a == on) && (b == off) && (c == off)) {
- return rules[3];
- }
- if ((a == off) && (b == on) && (c == on)) {
- return rules[4];
- }
- if ((a == off) && (b == on) && (c == off)) {
- return rules[5];
- }
- if ((a == off) && (b == off) && (c == on)) {
- return rules[6];
- }
- if ((a == off) && (b == off) && (c == off)) {
- return rules[7];
- }
- return 0;
- }
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.