Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //_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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement