loop-animation

吸い込まれる渦Black Hole

極座標の格子が渦を巻きながら中心の穴へ吸い込まれ続け、中心に近いほど強くねじれるループアニメーションです。

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

極座標の格子が渦を巻きながら中心へ吸い込まれ続ける。中心に近いほど強くねじれる

このシーンで作る

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

どう計算しているか

  1. 同心円の半径を「リングの縮み率」の累乗で決めます(R0·q^k)。内側ほど間隔が一定の割合で狭くなるので、どこを切り取っても似た見た目になります。
  2. 放射方向は「放射の分割数」で等分し、リングとの組み合わせで市松、格子線、リングのいずれかを描きます。
  3. 各点の角度に「渦の強さ」× log(R0 / 半径) を足すので、中心に近いほど大きくねじれ、放射線は対数螺旋(中心に向かって同じ割合で巻き込む螺旋)になります。
  4. 累乗の指数に時刻を加えて全てのリングを少しずつ縮めるので、模様が中心へ吸い込まれて見えます。中心は「穴の大きさ」の円で背景色にふさぎます。
r_k = R0·q^(k + shift·t),  θ' = θ + swirl·0.5·log(R0/r) + spin

ループがつながる理由

1ループで指数をちょうど整数段(市松なら2段、その他は色数ぶん)進めるので、各リングは別のリングの元の位置に収まり、市松の白黒や色の順番もそろいます。回転は扇形の色の並びが元と重なる角度の整数倍だけ回します。

調整できるパラメータ

形

描き方市松・格子線・リング
放射の分割数4 〜 64(初期値 24)
リングの縮み率0.6 〜 0.95(初期値 0.84)
穴の大きさ0 〜 120(初期値 30)
線幅0.5 〜 8(初期値 2)

動き

渦の強さ-3 〜 3(初期値 1.2)
回転-3 〜 3(初期値 1)

同じ分類のシーン(放射・回転)