Processingでシードオブライフ(Seed Of Life)

Processing
スポンサーリンク

はじめに

今回は「美しい幾何学」第18章の挿絵を参考にProcessingで作ります。

シードオブライフ(Seed Of Life)とは

シードオブライフ(Seed Of Life)とは神聖幾何学模様のひとつです。

シードオブライフは7つの円でできた幾何学模様です。
中央の円を6つの円が囲んでいて、このとき中央の円の中に花が咲いているように見えます。

比較的簡単にProcessingで再現できるのでやってみましょう。

プログラム

プログラムは以下になります。円が重なるピンクの花の部分と緑の葉の部分はarc関数を用いて書きました。円が重なる花と葉は6個あるのでfor文は6回でいいのですが、完全には埋まらなかったので12回for文を回しています。

float r = 100;
void setup() {
  size(500, 500);
  noLoop();
}

void draw() {
  background(getCol3());
  translate(width/2, height/2);

  stroke(getCol0());
  strokeWeight(3);
  //6つの円
  noFill(); 
  for (float i = 0; i < 5*PI/3; i+=PI/3) {
    float x = r * cos(i);
    float y = r * sin(i);
    ellipse(x, y, r*2, r*2);
  }
  
  for (int i = 0; i<12; i++) {
    ar2();
    rotate(PI/3);
  }

  fill(getCol6());
  ellipse(0, 0, r*2, r*2);
  noFill();
  ellipse(0, 0, r*4, r*4);

  for (int i = 0; i<12; i++) {
    ar1();
    rotate(PI/3);
  }

  fill(getCol5());
  for (float i = 0; i < 5*PI/3; i += PI/3) {
    ellipse(r*cos(i), -r*sin(i), 10, 10);
    ellipse(r*2*cos(i), -r*2*sin(i), 15, 15);
  }

  translate(-width/2, -height/2);
  powder();
}
//花
void ar1() {
  fill(getCol2());
  arc(r, 0, r*2, r*2, PI, 4*PI/3, OPEN);
  arc(r*cos(2*PI/3), -r*sin(2*PI/3), r*2, r*2, 0, PI/3, OPEN);
}
//葉
void ar2() {
  fill(getCol4(), 50);
  arc(r*cos(PI/3), -r*sin(PI/3), r*2, r*2, 2*PI/3, 4*PI/3, OPEN);
  arc(r*cos(2*PI/3), -r*sin(2*PI/3), r*2, r*2, -PI/3, PI/3, OPEN);
}

void powder() {
  for (int i = 0; i < 800000; i++) {
    stroke(random(255), 40);
    strokeWeight(0.6);
    point(random(width), random(height));
  }
}
int[] colors = {#E4CCE0,#B4679F,#B11868,#A78dbd,#ABB627,#EC9C29,#334924}; 
int getCol0() {
  return colors[0];
}
int getCol1() {
  return colors[1];
}
int getCol2() {
  return colors[2];
}
int getCol3() {
  return colors[3];
}
int getCol4() {
  return colors[4];
}
int getCol5() {
  return colors[5];
}
int getCol6() {
  return colors[6];
}

参考文献

・美しい幾何学

・数学から創るジェネラティブアート

関連記事

Processingおすすめ本
Processingのおすすめ本を紹介します

コメント

タイトルとURLをコピーしました