2023年1月16日月曜日

Π角形

YouTubeでm/n角形という話題を見かけた。

これは,タートルグラフィックスの定番らしい。Processingでプログラムを作ってみることにする。久々のProcessingはロゴも変わりバージョンは4.1.1になっている。

タートルグラフィックスの見本コードがサンプルの中にあったので,それを参考にしてみる。クリックするとタートルが進むとして,k角形の形は,一辺の長さを進むタートルの進行方向(方向単位ベクトル)の方位角が,進むたびに360度/kづつ増加するものと定義する。

float turtleX;
float turtleY;
float turtleT;
float k;

void setup() {
  size(512, 512);
  turtleX = width/2;
  turtleY = height/2;
  turtleT = 0;
  k=3.1415926;
  background(255);
}

void forward(float go) {
  float newX = turtleX + go*cos(turtleT);
  float newY = turtleY + go*sin(turtleT);
  line(turtleX, turtleY, newX, newY);
  turtleX = newX;
  turtleY = newY;
}

void rotate(float rot) {
  turtleT = turtleT - radians(rot);
}

void mousePressed() {
  strokeWeight(2);
  stroke(mouseX/2,mouseY/2,random(0,255));
  forward(128);
  rotate(360/k);
}

ここではm/nとして簡単な有理数ではなくて,円周率の近似値(有効数字8桁)を与えてみた。つまり,Π角形の作図になる。マウスクリックでタートルが進むようにした上で,線の色はクリック位置と乱数の組み合わせで選ぶことにする。


図:Π角形作図の途中段階のイメージ

0 件のコメント: