見出し画像

Swelling Sin Curve

画像1

int n_Ellipse = 100000; //描くパーティクルの数
int n_Line = 4; //サインカーブの本数
int n_Rot = 100; // サインカーブの周期数

void setup() {
 size(800, 800);
 noStroke();
 background(0);

 for (int j = 0; j < n_Line; j++) {
   for (int i = 0; i < n_Ellipse; i++) {

     //x座標を計算(横並びにnEllipse個分)
     float x = map(i, 0, n_Ellipse, 0+50, width-50);

     //sinカーブの振幅をそれぞれのカーブによって変える
     float rad = map(j, 0, n_Line, height/10, height/2);

     //y座標をサインカーブとして計算
     float y = height/2 + sin(map(i, 0, n_Ellipse, 0, TWO_PI * n_Rot)) * rad;

     //x, y座標にノイズを加える  //サインカーブの中間で一番ノイズが激しくなるように調整
     x += tan(TWO_PI * noise(x)) * sin(map(i, 0, n_Ellipse, 0, PI)) * 4;
     //y += tan(TWO_PI * noise(y, y)) * cos(map(i, 0, n_Ellipse, 0, PI)) * 10;

     //サインカーブの最初から最後にかけてパーティクルの大きさを変える(0→1.5→0)
     float esize = sin(map(i, 0, n_Ellipse, 0, PI)) * 1.5;

     fill(255, 100);
     ellipse(x, y, esize, esize);
   }
 }
}


サインカーブを多数のパーティクルで描いて、それにノイズを加えているだけです。

ノイズに使う三角関数を変えてみたり、サインカーブの本数・周期を適当に変えるだけでも見た目が結構変わります。

まだまだいじくりがいはあるかと思います。

下記、派生版を貼っておきます。

▼周期数を減らす・色を付ける・y軸にもノイズを加える・noise()のパラメータをx, yの二つに...etc

画像2

int n_Ellipse = 100000; //描くパーティクルの数
int n_Line = 4; //サインカーブの本数
int n_Rot = 2; // サインカーブの周期数

void setup() {
 size(800, 800);
 noStroke();
 colorMode(HSB, 100, 100, 100, 100);
 blendMode(SCREEN);
 background(0);

 for (int j = 0; j < n_Line; j++) {
   for (int i = 0; i < n_Ellipse; i++) {

     //x座標を計算(横並びにnEllipse個分)
     float x = map(i, 0, n_Ellipse, 0+50, width-50);

     //sinカーブの振幅をそれぞれのカーブによって変える
     float rad = map(j, 0, n_Line, height/10, height/2);

     //y座標をサインカーブとして計算
     float y = height/2 + sin(map(i, 0, n_Ellipse, 0, TWO_PI * n_Rot)) * rad;

     //x, y座標にノイズを加える  //サインカーブの中間で一番ノイズが激しくなるように調整
     x += tan(TWO_PI * noise(x, y)) * sin(map(i, 0, n_Ellipse, 0, PI)) * 10;
     y += tan(TWO_PI * noise(y, y)) * cos(map(i, 0, n_Ellipse, 0, PI)) * 10;

     //サインカーブの最初から最後にかけてパーティクルの大きさを変える(0→1.5→0)
     float esize = sin(map(i, 0, n_Ellipse, 0, PI)) * 1.5;
     float col = sin(map(i, 0, n_Ellipse, 0, PI)) * 100;
     fill(col, 70, 100, 50);
     ellipse(x, y, esize, esize);
   }
 }
}


▼カーブ一本にしてノイズ大目に。結構お気に入り。

画像3

▼その他雑多に貼っておきます、基本的なコードは一緒です。

画像4

画像5

画像6

画像7


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