loop-animation

点・公転Dot Orbit

格子に並んだ点がそれぞれ小さな円や往復の軌道をたどり、点ごとの位相のずれで波紋や渦の錯視が生まれるループです。

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

格子点がそれぞれ小さな円を描く。位相をずらすと波紋や渦のような錯視が浮かぶ

このシーンで作る

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

どう計算しているか

  1. 画面を「分割数」で決まる正方形の格子に区切り、各格子点を軌道の中心にします。
  2. 各点の角度は a = 2π·ease(fract(t − ずれ)) で求めます。「軌道」が円なら (cos a, sin a)、横往復・縦往復なら sin a だけ、8の字なら (sin a, sin 2a / 2) に「軌道の半径」を掛けて中心からずらします。
  3. 「ずれ」は「位相のずれ方」で選んだ量(中心からの距離、角度、斜め方向など)に「ずれ量」を掛けた値です。隣り合う点のタイミングが少しずつ違うため、全体として波や回転のような模様が見えます。
  4. 「表示」でメッシュを選ぶと、動いた後の点を縦横の隣同士で線で結びます。点の色は位相のずれの小数部分でパレットから選びます。
a = 2π·ease(fract(t − phase·spread)),  p = c + r·(cos a, sin a)

ループがつながる理由

fract(t − ずれ) は t が 0 から 1 まで進むとちょうど一周して元の値に戻ります。イージング後も 0 と 1 はそれぞれ角度 0 と 2π に対応するので、すべての点が最初の位置に戻ります。

調整できるパラメータ

形

表示点・メッシュ・点+メッシュ
分割数4 〜 60(初期値 18)
点の大きさ0.02 〜 1(初期値 0.28)
線幅0.5 〜 8(初期値 1.5)

動き

軌道円・横往復・縦往復・8の字
軌道の半径0 〜 1.5(初期値 0.45)
位相のずれ方同時・放射・角度・渦巻き・斜め・横・縦・市松・ランダム
ずれ量0 〜 4(初期値 2)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

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