Wolfram 1D cellular automata - 640x480 vga

Dependencies:   fastlib mbed vga640x480g

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "vga640x480g.h"
00003 
00004 void DisplayState(int s[],int len, int row);
00005 
00006 int main() {
00007 
00008     init_vga();
00009 
00010     vga_cls();
00011     
00012     int iteration = 479;
00013     int lenght = 639;
00014 
00015     int rules[8] = {1,1,1,0,1,0,0,1};
00016 
00017     int row = 0;
00018   
00019     int state[lenght];
00020     int newstate[lenght];
00021     int i,j,k;
00022  
00023  while(1) {
00024   
00025     for (i=0;i<lenght;i++)
00026   
00027         state[i]= int (rand()%2);
00028 
00029     for (i=0;i<iteration;i++) {
00030 
00031     for (j=0;j<lenght;j++) newstate[j] = 0;
00032 
00033     for (j=0;j<lenght;j++) {
00034 
00035         k = 4*state[(j-1+lenght)%lenght] + 2*state[j] + state[(j+1)%lenght];
00036         newstate[j] = rules[k];
00037       }
00038 
00039     for (j=0;j<lenght;j++) state[j] = newstate[j];
00040         
00041         DisplayState(state,lenght,row);
00042         row = row + 1;
00043         if (row == 480) row = 0;
00044    }
00045    
00046    }
00047 
00048   }    
00049   
00050   
00051 void DisplayState(int s[],int len, int row)
00052 {
00053     int i;
00054 
00055     for (i=0;i<len;i++) {
00056 
00057         if (s[i] == 1){
00058             vga_plot(i,row,WHITE);
00059        }
00060          
00061         else{
00062             vga_plot(i,row,BLACK);
00063         }
00064       }
00065 }