1次元セルオートマトン
提供:kuhalaboWiki
(版間での差分)
(ページの作成:「;Wolframのセルオートマトン シェルピンスキーのガスケットの描画 <pre> #include "ofApp.h" static const int NUM = 100; //セルの個数 int ce...」) |
|||
| 19行: | 19行: | ||
} | } | ||
cell[NUM/2][0] = 1; | cell[NUM/2][0] = 1; | ||
| − | |||
//状態遷移則 1つ前と1つ後の値を足した値の1桁目(2進法の足し算 XOR) | //状態遷移則 1つ前と1つ後の値を足した値の1桁目(2進法の足し算 XOR) | ||
| 27行: | 26行: | ||
} | } | ||
} | } | ||
| − | |||
} | } | ||
| 40行: | 38行: | ||
} | } | ||
} | } | ||
| − | |||
} | } | ||
</pre> | </pre> | ||
2017年11月6日 (月) 04:16時点における版
- Wolframのセルオートマトン
シェルピンスキーのガスケットの描画
#include "ofApp.h"
static const int NUM = 100; //セルの個数
int cell[NUM][NUM];
//--------------------------------------------------------------
void ofApp::setup(){
ofBackground(0, 0, 0); //背景色の設定
//初期状態は真ん中だけが 1 で残りはすべて 0
for(int i = 0; i < NUM; i++){
cell[i][0] = 0;
}
cell[NUM/2][0] = 1;
//状態遷移則 1つ前と1つ後の値を足した値の1桁目(2進法の足し算 XOR)
for(int j = 1; j < NUM; j++){
for(int i = 1; i < NUM-1; i++){
cell[i][j] = ( cell[i-1][j-1] + cell[i+1][j-1] ) % 2;
}
}
}
//--------------------------------------------------------------
void ofApp::draw(){
int w = 5; //セルの描画幅
for(int i = 0; i < NUM; i++){
for(int j = 0; j < NUM; j++){
if( cell[i][j] > 0 ) ofSetColor(255,0,0); //セルが 1 の時の描画色
else ofSetColor(0,0,0); //セルが 0 の時の描画色
ofRect(i * w, j * w , w , w );
}
}
}