loop-animation

惑星の軌道Orbital Dance

公転周期が整数比の2つの惑星を一定間隔で線で結び、線の残像が花のような模様を描いていくループです。

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

公転周期が整数比の2つの惑星を、一定間隔で線で結ぶ。線の残像が花のような模様を描く

このシーンで作る

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

どう計算しているか

  1. 内側の惑星は半径「内側の軌道半径」の円を「内側の周回数」回、外側の惑星は外側の円を「外側の周回数」回、1 ループの間に回ります。位置は (cos, sin) で求めます。
  2. 1 ループを「線の本数」等分した各時刻で、2 つの惑星の位置を直線で結びます。線の本数はパレットの色数の倍数に切り上げ、番号を色数で割った余りで色を選びます。
  3. 現在時刻から「残す線の割合」分だけさかのぼった線を描き、古い線ほど透明にします。2 つの周回数の比によって、線の束が異なる花びらの模様をつくります。
A(s) = r₁·e^{i2πf₁s},  B(s) = R·e^{i2πf₂s},  s = k/N

ループがつながる理由

周回数がどちらも整数なので、i 番目の線と i + 本数番目の線はまったく同じ位置に引かれます。本数が色数の倍数なので色も一致し、ループの終わりから始めへ線の並びが途切れずにつながります。

調整できるパラメータ

形

内側の周回数1 〜 20(初期値 13)
外側の周回数1 〜 20(初期値 8)
内側の軌道半径0.1 〜 0.95(初期値 0.55)
線の本数20 〜 600(初期値 240)
残す線の割合0.05 〜 1(初期値 0.6)
線幅0.25 〜 4(初期値 1)
軌道と惑星オン/オフ(初期値 オン)
大きさ0.3 〜 1.1(初期値 0.9)

同じ分類のシーン(点・軌道)