イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

二次元セル・オートマトン

//二次元セル・オートマトン mod変更で模様変えられる
int num = 128;
int mod = 8;
int state = new int[num][num];
int g_black = color(0);

void setup(){
  frameRate(10);
  size(1024,1024);
  background(g_black);  
  colorMode(HSB,100);
  initializeState();
  noStroke();
}

void draw(){
  drawcall();  
  updateState();
}

void drawcall(){
  for(int i=0;i<num;i++){
    for(int j=0;j<num;j++){
      int val = state[i][j];
      fill*1*val,100,100);
      int len = 1024/num;
      square(i*len,j*len,len);
    }
  }
}

int transition(int i,int j){
  int nextC;
  nextC = state[(i-1+num)%num][j] + 
          state[i][(j-1+num)%num] + 
          state[i][j] + 
          state[i][(j+1)%num] + 
          state[(i+1)%num][j];
  return nextC % mod;
}

void updateState(){
  int nextState = new int[num][num];
  for(int i=0;i<num;i++){
    for(int j=0;j<num;j++){
      nextState[i][j] = transition(i,j);
    }
  }
  state = nextState;
}

void initializeState(){
  for(int i=0;i<num;i++){
    for(int j=0;j<num;j++){
      if(i==num/2 && j==num/2){
        state[i][j] = 1;
      }else{
        state[i][j] = 0;
      }
    }
  }
}

*1:100/(mod+1