ニュートンのゆりかごNewton's Cradle
端の玉が振り下ろされてぶつかると反対側の玉が跳ね上がる、ニュートンのゆりかごを周期関数で再現したループです。
どう計算しているか
- 「玉の数」の振り子を横に並べ、時間 u を前半と後半に分けます。前半は右端から「動く玉の数」の玉だけが、後半は左端の同じ数の玉だけが振れます。
- 各半分の中では進み具合 k を 0 から 1 に動かし、振れ角を θ = 「振れ角(度)」·sin(πk) とします。k が 0 と 1 のときに角度が 0 になり、そこで衝突して反対側に運動が受け渡されたように見えます。
- 玉の位置は支点から糸の長さ L の先を sin・cos で求めます。「玉のハイライト」をオンにすると、玉の左上に白を混ぜた小さな円を重ねます。
- 「台の数」で台を縦に並べ、台ごとに「台ごとの時間差」だけ時刻をずらして動かします。
u = fract((t − r·lag)·hits/2), θ = θmax·sin(π·fract(2u))ループがつながる理由
時間は u = fract((t − 時間差)·衝突回数/2) で求めます。「1ループの衝突回数」は偶数しか選べないので、1 ループで往復がちょうど整数回終わり、どの台も t = 0 と同じ状態に戻ります。
調整できるパラメータ
形
| 玉の数 | 3 〜 9(初期値 5) |
|---|---|
| 動く玉の数 | 1 〜 3(初期値 1) |
| 台の数 | 1 〜 5(初期値 1) |
| 大きさ | 0.3 〜 1.2(初期値 0.8) |
| 枠 | オン/オフ(初期値 オン) |
| 玉のハイライト | オン/オフ(初期値 オン) |
動き
| 振れ角(度) | 10 〜 80(初期値 42) |
|---|---|
| 台ごとの時間差 | 0 〜 0.5(初期値 0.25) |
| 1ループの衝突回数 | 2 〜 6(初期値 2) |
同じ分類のシーン(点・軌道)
- 点・公転Dot Orbit格子に並んだ点がそれぞれ小さな円や往復の軌道をたどり、点ごとの位相のずれで波紋や渦の錯視が生まれるループです。
- 軌道上の点Lissajous Dots縦と横で周波数の異なる正弦波がつくるリサージュ曲線の上を、たくさんの点が等間隔に並んで行進するループです。
- 周転円・フーリエEpicycles回転する円をいくつも連ねた腕の先端が、整数周波数の重ね合わせによって対称なロゼット模様を描き続けるループです。
- 振り子の波Pendulum Wave1ループの往復回数が1回ずつ違う振り子を並べ、揃っては崩れる波や渦のような模様をつくるループです。
- 糸かけString Art円周上の点 i から点 i×m へ糸を張る掛け算の糸かけで、両端の点が回転するにつれて包絡線の形が変わるループです。
- 群れFlock小さな矢じりの群れが整数周波数の軌道に沿って泳ぎ、集まったり散ったりを繰り返す魚群のようなループです。
- 惑星の軌道Orbital Dance公転周期が整数比の2つの惑星を一定間隔で線で結び、線の残像が花のような模様を描いていくループです。
- パーティクルの図形Particle Shapes点が集まって図形をつくり、渦を巻きながら散らばって次の図形へ集まり直すことを繰り返すループです。
- SDF・シェーダーGLMetaballs整数周波数で周回する複数の円の距離関数をなめらかに合成し、液体のように溶け合う形を描くシェーダーのループです。
- ボロノイ・シェーダーGLVoronoi Cells整数周波数で漂う母点から最も近い点ごとに画面を分けるボロノイ分割を、細胞や境界線、等距離線で描くシェーダーのループです。