周転円・フーリエEpicycles
回転する円をいくつも連ねた腕の先端が、整数周波数の重ね合わせによって対称なロゼット模様を描き続けるループです。
どう計算しているか
- 「円の数」だけ円を用意し、それぞれに回転の周波数、半径、初期角度を割り当てます。半径と初期角度は「シード」から作る乱数で決まり、半径は番号が大きいほど「円の縮み方」に従って小さくなります。
- 周波数は 1, 1+k, 1−k, 1+2k, 1−2k … の形にします(k は「対称数」)。どの周波数も k で割ると 1 余るので、合成した曲線は k 回回転対称になります。
- ペン先の位置は、各円の (cos, sin) に半径を掛けたベクトルを順に足し合わせて求めます。複素数の回転を足し合わせるのと同じ計算で、フーリエ級数による曲線の表現に相当します。
- 「円と腕」をオンにすると、前の円の先端を次の円の中心にして円と半径の線を描きます。「残像の長さ」の分だけ過去のペン先の軌跡を、古いほど薄く細く描きます。
z(s) = Σ r_j·e^{i(2π f_j s + φ_j)}, f_j = 1 + m_j·kループがつながる理由
すべての円の周波数が整数なので、媒介変数が 1 進むと各円がちょうど整数回転して腕全体が元の形に戻ります。ペン先は 1 ループで「1ループの周回数」だけ曲線を周回します。
調整できるパラメータ
形
| 円の数 | 2 〜 12(初期値 5) |
|---|---|
| 対称数 | 2 〜 12(初期値 5) |
| シード | 0 〜 999(初期値 7) |
| 大きさ | 0.3 〜 1.2(初期値 0.85) |
| 円の縮み方 | 0.3 〜 2(初期値 1) |
| 円と腕 | オン/オフ(初期値 オン) |
| 全体の軌跡 | オン/オフ(初期値 オン) |
| 残像の長さ | 0 〜 1(初期値 0.35) |
| 線幅 | 0.5 〜 12(初期値 4) |
動き
| 1ループの周回数 | 1 〜 4(初期値 1) |
|---|
同じ分類のシーン(点・軌道)
- 点・公転Dot Orbit格子に並んだ点がそれぞれ小さな円や往復の軌道をたどり、点ごとの位相のずれで波紋や渦の錯視が生まれるループです。
- 軌道上の点Lissajous Dots縦と横で周波数の異なる正弦波がつくるリサージュ曲線の上を、たくさんの点が等間隔に並んで行進するループです。
- 振り子の波Pendulum Wave1ループの往復回数が1回ずつ違う振り子を並べ、揃っては崩れる波や渦のような模様をつくるループです。
- 糸かけString Art円周上の点 i から点 i×m へ糸を張る掛け算の糸かけで、両端の点が回転するにつれて包絡線の形が変わるループです。
- 群れFlock小さな矢じりの群れが整数周波数の軌道に沿って泳ぎ、集まったり散ったりを繰り返す魚群のようなループです。
- ニュートンのゆりかごNewton's Cradle端の玉が振り下ろされてぶつかると反対側の玉が跳ね上がる、ニュートンのゆりかごを周期関数で再現したループです。
- 惑星の軌道Orbital Dance公転周期が整数比の2つの惑星を一定間隔で線で結び、線の残像が花のような模様を描いていくループです。
- パーティクルの図形Particle Shapes点が集まって図形をつくり、渦を巻きながら散らばって次の図形へ集まり直すことを繰り返すループです。
- SDF・シェーダーGLMetaballs整数周波数で周回する複数の円の距離関数をなめらかに合成し、液体のように溶け合う形を描くシェーダーのループです。
- ボロノイ・シェーダーGLVoronoi Cells整数周波数で漂う母点から最も近い点ごとに画面を分けるボロノイ分割を、細胞や境界線、等距離線で描くシェーダーのループです。