오늘은 드디어!!
Wolfram Rule [0~255]에 따라 펼쳐지는 멋진 숲의 풍경을 우리 구경하러 가는 날이에요~~^^* YEAH~~!!!
핵심코드들 다 공부해 놓았으니 전체 코드 바로 들어가 보시죠~~!!!
입수~~!!! 풍덩~~!!! 촤아아~~!!!
let cells = [];
let ruleValue = 89;
let ruleSet;
let w = 4;
let y = 0;
function setup() {
createCanvas(400, 400);
ruleSet = ruleValue.toString(2).padStart(8, "0");
//앞에서부터 빈 정보는 0으로 채운 8자리 이진법 문자열입니다.
//"01010101"
//정보를 사용할 때는 함수 parseInt()를 사용해서 정수변환합니다.
let total = width / w;
for (let i = 0; i < total; i++) {
cells[i] = 0;
}
cells[floor(total / 2)] = 1;
background(255);
//첫 세대는 한 가운데 검은 씨앗 하나만 심어집니다~^^*
}
function draw() {
for (let i = 0; i < cells.length; i++) {
let x = i * w;
noStroke();
fill(255 - cells[i] * 255);
square(x, y, w);
//지금 상태를 나타내는 Cells[]의 0=>흰색, 1=>검은색 표현합니다.
}
y += w;
//한 줄 내려 갑니다~
let nextCells = [];
//Cells의 다음 상태 정보를 저장해 놓는 배열입니다~^^*
let len = cells.length;
for (let i = 0; i < len; i++) {
let left = cells[(i - 1 + len) % len];
let right = cells[(i + 1) % len];
let state = cells[i];
let newState = calculateState(left, state, right);
nextCells[i] = newState;
//[왼-나-오른]환경에 대해서 Wolfram ruleSet의 다음상태 변환명령 newState를 Cells의 다음상태를 나타내는 배열 nextCells에 저장합니다.
}
cells = nextCells;
//다음 상태를 저장한 nextCells정보를 지금 상태를 나타내는 cells에 저장합니다.
//Cells가 이제 이전 Cells의 Next Generation이 된 것입니다!!
}
function calculateState(a, b, c) {
let neighborhood = "" + a + b + c;
let value = 7 - parseInt(neighborhood, 2);
return parseInt(ruleSet[value]);
//ruleSet의 value번째에 저장된 이진법 문자를 정수로 변환하여 반환합니다.
//다음 상태 변환명령이 담겨 있습니다.
}
어제 Wolfram Rule 89에 따른 변환 과정을 노트 위에 그려 보았었지요~~^^*
그래서 Wolfram Rule 89를 이제 컴퓨터 모니터 화면 위에 그려 볼까요~~^^*
배경 공부 정성스럽게 하고 완성한 깔끔한 코드가 뿌듯하네요~~^^* 근데, 오랜 준비 끝 완성을 보고 나니 살짝 허전하기도 하네요~^^*
그래서!!!
지금부터 Study with Me Live!!!
Wolfram Rule 0부터 255까지를 코드로 다 만들어 보겠습니다~~
let ruleValue = 0 ~ 255;
이 부분 코드만 바꾸면 되겠지요~~^^*
네 그럼 지금부터 ruleValue 만 고쳐서 Wolfram Rule 하나 하나의 고유한 프로그램을 만들어 볼게요~~^^*
네^^* Rule 64까지 변환해 보았네요~^^*
앞으로 매일 조금씩 변환 프로그램을 더해서 이 페이지 내용을 업데이트 해보겠습니다~^^*
오늘까지 Wolfram Rule [0 ~ 255] 프로그램을 공부해 보았는데요~^^*
이제 동영상 강의를 보시면, 정리가 되실 것 같기도 해요~~^^*
강사님이 여러가지 다양한 시도를 해 나가면서, 최종적으로 깔끔한 방식을 보여주시기 때문에~~처음부터 보시면, 음…이런 방식들이 진화가 되어 최종 코드가 만들어 졌구나~~느낄 수 있을 것 같아요~~^^*
16:45부터 우리의 코드가 본격적으로 만들어 지는 과정이 담겨 있습니다~~^^*
강의의 예제로 나오는 Wolfram Rule들을 살펴 볼게요~
네~~^^*
피와 살을 가진 우리와, 0과 1의 세계에 사는 컴퓨터가 함께 만들 수 있는 아름다움을 Wolfram Rule 110이 보여주고 있네요~~^^*
우리의 임의성 Arbitrarity와 컴퓨터의 반복성 Repetition이 조화와 균형을 이루면 자연스러운 아름다움이 발생하는 것 같아요~~^^*
Wolfram Rule [0~255]에 의해 생기는 Elementary Cellular Automata!
Elementary Cellular Automaton — from Wolfram MathWorld
오늘도 저와 함께 Wolfram의 세계를 거닐어 주셔서 감사합니다~^^*
Wolfram Rule 나머지 부분들은 오늘 시간이 날 때마다 보충해 놓겠습니다~~^^*
내일~~ 우리~~함께 음악 듣고요~~^^*
그때 이 페이지의 내용 보충된 부분을 확인해 보시면 감사하겠습니다~~^^*
화요일엔, p5.js the Nature of Code의 부록 프로그램 마지막 편을 공부 시작할까요, 우리~~^^*
오늘도 즐거운 하루!!! 편안한 밤!!! 보내셔요~~!!!
네!!! 꿈은 이루어 집니다~~!!!
넵~~ 보충입니다~~
댓글 남기기