Silverback9

#야생으로

Creative Coding 독학 제158일 2024년09월01일(일)

오늘은 드디어!!

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 하나 하나의 고유한 프로그램을 만들어 볼게요~~^^*

Wolfram Rule 0 “00000000”

Wolfram Rule 1 “00000001”

Wolfram Rule 2 “00000010”

Wolfram Rule 3 “00000011”

Wolfram Rule 4 “00000100”

Wolfram Rule 5 “00000101”

Wolfram Rule 6 “00000110”

Wolfram Rule 7 “00000111”

Wolfram Rule 8 “00001000”

Wolfram Rule 9 “00001001”

Wolfram Rule 10 “00001010”

Wolfram Rule 11 “00001011”

Wolfram Rule 12 “00001100”

Wolfram Rule 13 “00001101”

Wolfram Rule 14 “00001110”

Wolfram Rule 15 “00001111”

Wolfram Rule 16 “00010000”

Wolfram Rule 17 “00010001”

Wolfram Rule 18 “00010010”

Wolfram Rule 19 “00010011”

Wolfram Rule 20 “00010100”

Wolfram Rule 21 “00010101”

Wolfram Rule 22 “00010110”

Wolfram Rule 23 “00010111”

Wolfram Rule 24 “00011000”

Wolfram Rule 25 “00011001”

Wolfram Rule 26 “00011010”

Wolfram Rule 27 “00011011”

Wolfram Rule 28 “00011100”

Wolfram Rule 29 “00011101”

Wolfram Rule 30 “00011110”

Wolfram Rule 31 “00011111”

Wolfram Rule 32 “00100000”

Wolfram Rule 33 “00100001”

Wolfram Rule 34 “00100010”

Wolfram Rule 35 “00100011”

Wolfram Rule 36 “00100100”

Wolfram Rule 37 “00100101”

Wolfram Rule 38 “00100110”

Wolfram Rule 39 “00100111”

Wolfram Rule 40 “00101000”

Wolfram Rule 41 “00101001”

Wolfram Rule 42 “00101010”

Wolfram Rule 43 “00101011”

Wolfram Rule 44 “00101100”

Wolfram Rule 45 “00101101”

Wolfram Rule 46 “00101110”

Wolfram Rule 47 “00101111”

Wolfram Rule 48 “00110000”

Wolfram Rule 49 “00110001”

Wolfram Rule 50 “00110010”

Wolfram Rule 51 “00110011”

Wolfram Rule 52 “00110100”

Wolfram Rule 53 “00110101”

Wolfram Rule 54 “00110110”

Wolfram Rule 55 “00110111”

Wolfram Rule 56 “00111000”

Wolfram Rule 57 “00111001”

Wolfram Rule 58 “00111010”

Wolfram Rule 59 “00111011”

Wolfram Rule 60 “00111100”

Wolfram Rule 61 “00111101”

Wolfram Rule 62 “00111110”

Wolfram Rule 63 “00111111”

Wolfram Rule 64 “01000000”

네^^* Rule 64까지 변환해 보았네요~^^*

앞으로 매일 조금씩 변환 프로그램을 더해서 이 페이지 내용을 업데이트 해보겠습니다~^^*

오늘까지 Wolfram Rule [0 ~ 255] 프로그램을 공부해 보았는데요~^^*

이제 동영상 강의를 보시면, 정리가 되실 것 같기도 해요~~^^*

강사님이 여러가지 다양한 시도를 해 나가면서, 최종적으로 깔끔한 방식을 보여주시기 때문에~~처음부터 보시면, 음…이런 방식들이 진화가 되어 최종 코드가 만들어 졌구나~~느낄 수 있을 것 같아요~~^^*

16:45부터 우리의 코드가 본격적으로 만들어 지는 과정이 담겨 있습니다~~^^*

강의의 예제로 나오는 Wolfram Rule들을 살펴 볼게요~

Wolfram Rule 182

Wolram Rule 222

Wolfram Rule 246

Wolfram Rule 30

Wolfram Rule 110

네~~^^*

피와 살을 가진 우리와, 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의 부록 프로그램 마지막 편을 공부 시작할까요, 우리~~^^*

오늘도 즐거운 하루!!! 편안한 밤!!! 보내셔요~~!!!

네!!! 꿈은 이루어 집니다~~!!!

넵~~ 보충입니다~~

Wolfram Rule 65 “01000001”

Wolfram Rule 66 “01000010”

Wolfram Rule 67 “01000011”

Wolfram Rule 68 “01000100”

Wolfram Rule 69 “01000101”

Wolfram Rule 70 “01000110”

Wolfram Rule 71 “01000111”

Wolfram Rule 72 “01001000”

Wolfram Rule 73 “01001001”

Wolfram Rule 74 “01001010”

Wolfram Rule 75 “01001011”

Wolfram Rule 76 “01001100”

Wolfram Rule 77 “01001101”

Wolfram Rule 78 “01001110”

Wolfram Rule 79 “01001111”

Wolfram Rule 80 “01010000”

Wolfram Rule 81 “01010001”

Wolfram Rule 82 “01010010”

Wolfram Rule 83 “01010011”

Wolfram Rule 84 “01010100”

Wolfram Rule 85 “01010101”

Wolfram Rule 86 “01010110”

Wolfram Rule 87 “01010111”

Wolfram Rule 88 “01011000”

Wolfram Rule 89 “01011001”

댓글 남기기