群れFlock
小さな矢じりの群れが整数周波数の軌道に沿って泳ぎ、集まったり散ったりを繰り返す魚群のようなループです。
どう計算しているか
- 「群れの数」だけ群れを作り、それぞれの中心を x = sin(2π(fx·s + 位相))、y = sin(2π(fy·s + 位相)) のリサージュ曲線で動かします。周波数 fx, fy と振幅は「シード」から作る乱数で決まり、全体の大きさは「軌道の大きさ」で決まります。
- 各個体は中心からのずれ (ox, oy) を持ちます。ずれの大きさは「群れの広がり」に、1 ループに 2 回膨らんで縮む sin の係数を掛けたもので、その振れ幅を「集散の強さ」で決めます。
- さらに各個体は半径の小さな円を整数周波数で回り、群れの中でうごめくような細かい動きを加えます。
- 各個体は時刻を少しだけ遅らせて(最大「群れの縦の長さ」)軌道をたどるため、群れが進行方向に伸びます。向きは少し先の位置との差から atan2 で求め、図形をその方向へ回転させます。
c(s) = (aₓ·sin 2π(fₓs + pₓ), a_y·sin 2π(f_y s + p_y)), s = t − lagループがつながる理由
群れの軌道、集散、個体の小さな円運動のすべてが整数周波数の sin・cos でできているため、t が 1 進むと全員が元の位置と向きに戻ります。個体ごとの時間の遅れも、周期関数の中での一定のずれにすぎません。
調整できるパラメータ
形
| 群れの数 | 1 〜 6(初期値 3) |
|---|---|
| 1群れの数 | 5 〜 120(初期値 40) |
| 個体の大きさ | 3 〜 30(初期値 10) |
| 形 | 矢じり・点・線 |
| シード | 0 〜 999(初期値 21) |
動き
| 軌道の大きさ | 100 〜 480(初期値 340) |
|---|---|
| 群れの広がり | 5 〜 200(初期値 60) |
| 集散の強さ | 0 〜 1(初期値 0.6) |
| 群れの縦の長さ | 0 〜 0.3(初期値 0.08) |
同じ分類のシーン(点・軌道)
- 点・公転Dot Orbit格子に並んだ点がそれぞれ小さな円や往復の軌道をたどり、点ごとの位相のずれで波紋や渦の錯視が生まれるループです。
- 軌道上の点Lissajous Dots縦と横で周波数の異なる正弦波がつくるリサージュ曲線の上を、たくさんの点が等間隔に並んで行進するループです。
- 周転円・フーリエEpicycles回転する円をいくつも連ねた腕の先端が、整数周波数の重ね合わせによって対称なロゼット模様を描き続けるループです。
- 振り子の波Pendulum Wave1ループの往復回数が1回ずつ違う振り子を並べ、揃っては崩れる波や渦のような模様をつくるループです。
- 糸かけString Art円周上の点 i から点 i×m へ糸を張る掛け算の糸かけで、両端の点が回転するにつれて包絡線の形が変わるループです。
- ニュートンのゆりかごNewton's Cradle端の玉が振り下ろされてぶつかると反対側の玉が跳ね上がる、ニュートンのゆりかごを周期関数で再現したループです。
- 惑星の軌道Orbital Dance公転周期が整数比の2つの惑星を一定間隔で線で結び、線の残像が花のような模様を描いていくループです。
- パーティクルの図形Particle Shapes点が集まって図形をつくり、渦を巻きながら散らばって次の図形へ集まり直すことを繰り返すループです。
- SDF・シェーダーGLMetaballs整数周波数で周回する複数の円の距離関数をなめらかに合成し、液体のように溶け合う形を描くシェーダーのループです。
- ボロノイ・シェーダーGLVoronoi Cells整数周波数で漂う母点から最も近い点ごとに画面を分けるボロノイ分割を、細胞や境界線、等距離線で描くシェーダーのループです。