loop-animation

球面の点Dot Sphere

球面に均等に並べた点を回転させ、緯度に沿った波で表面を脈打たせながら色の縞を流すアニメーションです。

Canvas 2D で、図形を 1 つずつ計算して描いています。初期設定で再生しています。

球面に均等に並んだ点が回転する。緯度に沿った波で表面が脈打ち、縞模様が流れる

このシーンで作る

パラメータ、色、エフェクトを変えて、GIF・APNG・WebP・MP4・WebM で書き出せます。

どう計算しているか

  1. 点 i の高さを y = 1 − 2(i + 0.5)/n とし、水平方向の角度を i × 黄金角(約137.5°)ずつ進めます。こうすると、点が球面にほぼ均等に散らばります。
  2. 緯度に応じて半径を 1 + 脈打つ強さ·sin(2π(緯度·脈の細かさ − t)) 倍にします。こうして、膨らみが北から南へ流れる波を作ります。
  3. 球を縦軸まわりに「1ループの回転数」ぶん回し、「傾き」の角度だけ倒して、遠近感をつけて投影します。奥の点ほど小さくし、背景色に近づけます。
  4. 「流れる縞」では、緯度を「縞の数」で区切った帯ごとに色を割り当て、時間とともに色の番号をずらします。「螺旋」では水平方向の角度も色の番号に加えます。
y = 1 − 2(i+0.5)/n,  φ = i·137.5°,  k = 1 + A·sin 2π(lat·f − t)

ループがつながる理由

脈の sin は t について周期1なので、1ループで1周期ぶん進みます。回転数は整数です。色の番号は1ループでちょうどパレットの色数ぶんずれるので、同じ色の並びに戻ります。

調整できるパラメータ

形

点の数50 〜 3000(初期値 900)
大きさ0.3 〜 1.1(初期値 0.8)
点の大きさ0.5 〜 14(初期値 4)
傾き-1.5 〜 1.5(初期値 0.4)
色分け流れる縞・螺旋・単色
縞の数1 〜 16(初期値 6)

動き

1ループの回転数0 〜 3(初期値 1)
脈打つ強さ0 〜 0.4(初期値 0.08)
脈の細かさ1 〜 12(初期値 4)
遠近感0 〜 1(初期値 0.3)

同じ分類のシーン(立体・擬似3D)