Wolfram 1D cellular automata - 640x480 vga
Dependencies: fastlib mbed vga640x480g
main.cpp@0:106895e78e6d, 2012-02-27 (annotated)
- Committer:
- JLS
- Date:
- Mon Feb 27 20:55:25 2012 +0000
- Revision:
- 0:106895e78e6d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JLS | 0:106895e78e6d | 1 | #include "mbed.h" |
JLS | 0:106895e78e6d | 2 | #include "vga640x480g.h" |
JLS | 0:106895e78e6d | 3 | |
JLS | 0:106895e78e6d | 4 | void DisplayState(int s[],int len, int row); |
JLS | 0:106895e78e6d | 5 | |
JLS | 0:106895e78e6d | 6 | int main() { |
JLS | 0:106895e78e6d | 7 | |
JLS | 0:106895e78e6d | 8 | init_vga(); |
JLS | 0:106895e78e6d | 9 | |
JLS | 0:106895e78e6d | 10 | vga_cls(); |
JLS | 0:106895e78e6d | 11 | |
JLS | 0:106895e78e6d | 12 | int iteration = 479; |
JLS | 0:106895e78e6d | 13 | int lenght = 639; |
JLS | 0:106895e78e6d | 14 | |
JLS | 0:106895e78e6d | 15 | int rules[8] = {1,1,1,0,1,0,0,1}; |
JLS | 0:106895e78e6d | 16 | |
JLS | 0:106895e78e6d | 17 | int row = 0; |
JLS | 0:106895e78e6d | 18 | |
JLS | 0:106895e78e6d | 19 | int state[lenght]; |
JLS | 0:106895e78e6d | 20 | int newstate[lenght]; |
JLS | 0:106895e78e6d | 21 | int i,j,k; |
JLS | 0:106895e78e6d | 22 | |
JLS | 0:106895e78e6d | 23 | while(1) { |
JLS | 0:106895e78e6d | 24 | |
JLS | 0:106895e78e6d | 25 | for (i=0;i<lenght;i++) |
JLS | 0:106895e78e6d | 26 | |
JLS | 0:106895e78e6d | 27 | state[i]= int (rand()%2); |
JLS | 0:106895e78e6d | 28 | |
JLS | 0:106895e78e6d | 29 | for (i=0;i<iteration;i++) { |
JLS | 0:106895e78e6d | 30 | |
JLS | 0:106895e78e6d | 31 | for (j=0;j<lenght;j++) newstate[j] = 0; |
JLS | 0:106895e78e6d | 32 | |
JLS | 0:106895e78e6d | 33 | for (j=0;j<lenght;j++) { |
JLS | 0:106895e78e6d | 34 | |
JLS | 0:106895e78e6d | 35 | k = 4*state[(j-1+lenght)%lenght] + 2*state[j] + state[(j+1)%lenght]; |
JLS | 0:106895e78e6d | 36 | newstate[j] = rules[k]; |
JLS | 0:106895e78e6d | 37 | } |
JLS | 0:106895e78e6d | 38 | |
JLS | 0:106895e78e6d | 39 | for (j=0;j<lenght;j++) state[j] = newstate[j]; |
JLS | 0:106895e78e6d | 40 | |
JLS | 0:106895e78e6d | 41 | DisplayState(state,lenght,row); |
JLS | 0:106895e78e6d | 42 | row = row + 1; |
JLS | 0:106895e78e6d | 43 | if (row == 480) row = 0; |
JLS | 0:106895e78e6d | 44 | } |
JLS | 0:106895e78e6d | 45 | |
JLS | 0:106895e78e6d | 46 | } |
JLS | 0:106895e78e6d | 47 | |
JLS | 0:106895e78e6d | 48 | } |
JLS | 0:106895e78e6d | 49 | |
JLS | 0:106895e78e6d | 50 | |
JLS | 0:106895e78e6d | 51 | void DisplayState(int s[],int len, int row) |
JLS | 0:106895e78e6d | 52 | { |
JLS | 0:106895e78e6d | 53 | int i; |
JLS | 0:106895e78e6d | 54 | |
JLS | 0:106895e78e6d | 55 | for (i=0;i<len;i++) { |
JLS | 0:106895e78e6d | 56 | |
JLS | 0:106895e78e6d | 57 | if (s[i] == 1){ |
JLS | 0:106895e78e6d | 58 | vga_plot(i,row,WHITE); |
JLS | 0:106895e78e6d | 59 | } |
JLS | 0:106895e78e6d | 60 | |
JLS | 0:106895e78e6d | 61 | else{ |
JLS | 0:106895e78e6d | 62 | vga_plot(i,row,BLACK); |
JLS | 0:106895e78e6d | 63 | } |
JLS | 0:106895e78e6d | 64 | } |
JLS | 0:106895e78e6d | 65 | } |