float myNoise = 0.0; //ノイズの初期値 float start = 0.0; //myNoiseのスタート地点 float step = 0.02; //ステップの数値が少ないと変化が滑らかになる void setup() { size(400, 400); } void draw() { background(0); myNoise = start; float radians = 0; //角度 float radius = 0; //半径 float cx = width/2; //中心のx座標 float cy = height/2; //中心のy座標 float px = 0; //1ループ前のx座標を記録するための変数 float py = 0; //1ループ前のy座標を記録するための変数 for (int i = 0; i < 2000; i ++) { radians += (noise(myNoise)-0.2) * 0.4; //角度を増やしたり減らしたりする radius += 0.004; //半径を段階的に増やす float x = px + cos(radians) * radius; //1ループ前の場所からradians角度だけradiusの距離分進んだ位置のx座標 float y = py + sin(radians) * radius; //1ループ前の場所からradians角度だけradiusの距離分進んだ位置のy座標 stroke(255); line(px + cx, py + cy, x + cx, y + cy); px = x; //次のループのためにx座標を保存 py = y; //次のループのためにy座標を保存 myNoise += step; //ノイズの値を更新 } } void mousePressed() { start = random(10); //myNoiseのスタート位置を変える }