見出し画像

とりあえず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);
 
 }
}

この記事が気に入ったらサポートをしてみませんか?