とりあえず100 #4
float ang = 0;
float n_Rot = 400;//カーブの周期数
float startCol = random(100);//カーブの最初の色
float endCol = random(100);//カーブの最後の色
void setup(){
println(startCol, endCol);
size(800, 800);
blendMode(SCREEN);
colorMode(HSB, 100, 100, 100);
smooth();
background(0);
noStroke();
translate(width/2, height/20);
for(float ang = 0; ang <= TWO_PI * n_Rot; ang += .01){
//振幅を変化 0→width/3→0
float rad = sin(map(ang, 0, TWO_PI * n_Rot, 0, PI)) * width/3;
//x座標をタンジェントで計算(タンジェントはすぐ画面外に飛び出るので振幅小さめで)
float x = tan(ang) * rad/20;
//y座標を変化 0→height-height/10→0
float y = map(ang, 0, TWO_PI * n_Rot, 0, height - height/10);
//y座標にノイズを追加
//y += noise(sin(map(ang, 0, TWO_PI * n_Rot/5, PI, 0)))*10;
//色をstartColからendColまでグラデーション
fill(map(ang, 0, TWO_PI * n_Rot, startCol, endCol), 80, 60);
//パーティクルのサイズを変化 0.2→2.0→0.2
float esize = 0.2 + (sin(map(ang, 0, TWO_PI * n_Rot, 0, PI))*1.8);
ellipse(x, y, esize, esize);
}
}
↓の派生版です。
ノイズを加えると…
カッチョイー
下記、いつものように派生版を貼っておきます。
個人的メモも兼ねて、コードも。
float ang = 0;
float n_Rot = 400;//サインカーブの周期数
float startCol = random(100);//カーブの最初の色
float endCol = random(100);//カーブの最後の色
void setup(){
println(startCol, endCol);
size(800, 800);
blendMode(SCREEN);
colorMode(HSB, 100, 100, 100);
background(0);
noStroke();
translate(width/2, 0);
for(float ang = 0; ang <= TWO_PI * n_Rot; ang += .01){
//振幅を変化 0→width/3→0
float rad = sin(map(ang, 0, TWO_PI * n_Rot, 0, TWO_PI/2)) * width/3;
//x座標をタンジェントで計算(タンジェントはすぐ画面外に飛び出るので振幅小さめで)
float x = tan(ang) * rad/20;
//y座標を変化 0→height-height/10→0
float y = map(ang, 0, TWO_PI * n_Rot, 0, height);
//y座標にノイズを追加
//y += noise(sin(map(ang, 0, TWO_PI * n_Rot/5, PI, 0)))*20;
//x += noise(sin(map(ang, 0, TWO_PI * n_Rot/5, PI, 0)))*20;
//色をstartColからendColまでグラデーション
fill(map(ang, 0, TWO_PI * n_Rot, startCol, endCol), 80, 60);
//パーティクルのサイズを変化 0.2→2.0→0.2
float esize = 0.2 + (sin(map(ang, 0, TWO_PI * n_Rot, 0, PI))*4);
ellipse(x, y, esize*10, esize/10);
}
}
float ang = 0;
float n_Rot = 400;//サインカーブの周期数
float startCol = random(100);//カーブの最初の色
float endCol = random(100);//カーブの最後の色
void setup(){
println(startCol, endCol);
size(800, 800);
blendMode(SCREEN);
colorMode(HSB, 100, 100, 100);
background(0);
noStroke();
translate(width/2, 0);
for(float ang = 0; ang <= TWO_PI * n_Rot; ang += .01){
//振幅を変化 0→width/3→0
float rad = sin(map(ang, 0, TWO_PI * n_Rot, 0, TWO_PI*20)) * width/3;
//x座標をタンジェントで計算(タンジェントはすぐ画面外に飛び出るので振幅小さめで)
float x = tan(ang) * rad;
//y座標を変化 0→height-height/10→0
float y = map(ang, 0, TWO_PI * n_Rot, 0, height);
//y座標にノイズを追加
//y += noise(sin(map(ang, 0, TWO_PI * n_Rot/5, PI, 0)))*20;
//x += noise(sin(map(ang, 0, TWO_PI * n_Rot/5, PI, 0)))*20;
//色をstartColからendColまでグラデーション
fill(map(ang, 0, TWO_PI * n_Rot, startCol, endCol), 80, 60);
//パーティクルのサイズを変化 0.2→2.0→0.2
float esize = 0.2 + (sin(map(ang, 0, TWO_PI * n_Rot, 0, PI))*4);
ellipse(x, y, esize*10, esize/10);
}
}
float ang = 0;
float n_Rot = 400;//サインカーブの周期数
float startCol = random(100);//カーブの最初の色
float endCol = random(100);//カーブの最後の色
void setup(){
println(startCol, endCol);
size(800, 800);
blendMode(SCREEN);
colorMode(HSB, 100, 100, 100);
background(0);
noStroke();
translate(width/2, 0);
for(float ang = 0; ang <= TWO_PI * n_Rot; ang += .01){
//振幅を変化 0→width/3→0 //↓ここの数字がネック?
float rad = sin(map(ang, 0, TWO_PI * n_Rot, 0, TWO_PI * 20)) * width/2;
//x座標をタンジェントで計算(タンジェントはすぐ画面外に飛び出るので振幅小さめで)
float x = sin(ang) * rad % tan(ang)*rad;
//y座標を変化 0→height-height/10→0
float y = map(ang, 0, TWO_PI * n_Rot, 0, height);
//色をstartColからendColまでグラデーション
fill(map(ang, 0, TWO_PI * n_Rot, startCol, endCol), 80, 60);
//パーティクルのサイズを変化 0.2→2.0→0.2
float esize = map(y, 0, height, 15, 0);
ellipse(x, y, esize/10, esize*10);
}
}