processing_やってみた_004
先週の続き。
この渦巻きを100種類random()で生成。
fullScreen();
colorMode(RGB, 100);
background(255, 255, 255);
strokeWeight(0.5);
smooth();
//ワークスペースの中央に設定
int centx = width/2;
int centy = height/2;
float x, y;
for (int i = 0; i < 100; i++) {
float lastx = -999;
float lasty = -999;
float radiusNoise = random(10);
float radius = 10;
stroke(random(20), random(50), random(70), 80);
int startangle = int(random(360));
int endangle = 1440 + int(random(1440));
int anglestep = 5 + int(random(3));
for(float ang = startangle; ang <= endangle; ang += anglestep){
radiusNoise += 0.05;
println("rN " + radiusNoise);
radius += 0.5;
//random()よりも自然な変化を作るためにnoise()を使用。
//noise()は0~1を返す
float thisRadius = radius + (noise(radiusNoise) * 200) -100;
println("n(rN) " + noise(radiusNoise));
println("tR " + thisRadius);
println();
float rad = radians(ang);
x = centx + (thisRadius * cos(rad));
y = centy + (thisRadius * sin(rad));
if (lastx > -999) {
line(x, y, lastx, lasty);
}
//次のループで描画される位置に現在のline()の終点を代入
lastx = x;
lasty = y;
}
}
ちょっとジェネラティブって感じになってきた
100種類を生成した方法。何十種、何百種類ってのは全部for文管理なんですよね。
for (int i = 0; i < 100; i++) {
float lastx = -999;
float lasty = -999;
float radiusNoise = random(10);
float radius = 10;
stroke(random(20), random(50), random(70), 80);
//生成される円(i)の開始位置を設定
int startangle = int(random(360));//360度のうち何度の位置からスタートするか決定
int endangle = 1440 + int(random(1440));//線が何度回転するか決定
int anglestep = 5 + int(random(3));//何度ずつ回転するか決定
三角関数についてわかりやすく教えてくれた記事
三角関数高校時代数学で一番得意だったのにすっかり忘れてしまってる。
調べてみたらこの記事は図で解説もしてくれてるからめっちゃわかりやすかった!
今までは理解しないで、ほぼコピペで進めていたけど今回は違うぞ・・・!
この記事が気に入ったらサポートをしてみませんか?