日常の進捗

主に自分のための,行為とその習慣化の記録

Mod:Coding Challenge #30: Phyllotaxis

29が重すぎたので一旦飛ばした。Phyllotaxis、葉序とか言われる、茎上の葉の配び方の研究のことみたい。やってる事自体は数式があってそのパターンでひまわりの種子の配列のようなものを描くというもの。そこまで難しくなかったというか、式をコードにするのに抵抗がなくなってきたのかもしれない。15行版も書いた。

http://algorithmicbotany.org/papers/abop/abop-ch4.pdf

コード

float c = 5, n = 0;
// setup関数 : 初回1度だけ実行される
void setup() {
  size(960, 540); // ウィンドウサイズを960px,540pxに
  colorMode(HSB, 360, 100, 100); // HSBでの色指定にする
  smooth(); // 描画を滑らかに
  background(220, 20, 20);
}

// draw関数 : setup関数実行後繰り返し実行される
void draw() {
  translate(width/2, height/2);
  float theta = radians(137.5) * n;
  float r = c/2 * sqrt(n);
  float x = cos(theta) * r;
  float y = sin(theta) * r;
  fill(degrees(theta*1.02)%360, 80, 100);
  noStroke();
  ellipse(x, y, c-1, c-1);
  n++;
}

void mousePressed() {
  background(220, 20, 20);
  n = 0;
}

リファレンス