loop-animation

時計の針の群れClock Swarm

格子状に並んだ時計の2本の針が一斉に回り、模様 A と模様 B の間を行き来するループアニメーションです。

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

格子に並んだ時計の針が一斉に回り、模様 A と模様 B の間を行き来する

このシーンで作る

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

どう計算しているか

  1. 画面を格子に分け、各マスに2本の針を持つ時計を置きます。「模様 A」と「模様 B」は、マスの位置から2本の針の角度を決めるルールです(中心を向く、渦を巻く、ひし形を作るなど)。
  2. ループの前半で A から B へ、後半で B から A へ針を回します。角度の差は atan2 で -180°〜180° に直し、近い向きへ回るようにしています。
  3. 「移る途中の回転数」を上げると、移動の途中で長針と短針が逆向きに余分な周回をします。
  4. 各時計の開始時刻は中心からの距離に「位置による遅れ」を掛けてずらすので、変化が中心から外へ波のように広がります。
u = fract(t − d·lag·3),  θ = θ_A + Δ(θ_A, θ_B)·ease(2u) ± 2π·spins·ease(2u)

ループがつながる理由

針は A → B → A と往復し、途中で足す余分な回転は 360° の整数倍なので、ループの終わりには全ての針が A の角度に戻ります。時間差も fract で巻き戻すので、どの時計も1ループで往復をちょうど1回終えます。

調整できるパラメータ

形

分割数3 〜 24(初期値 9)
文字盤オン/オフ(初期値 オン)
針の太さ1 〜 20(初期値 6)

動き

模様 A中心を指す・渦・ひし形・四角・波・平行・十字
模様 B中心を指す・渦・ひし形・四角・波・平行・十字
移る途中の回転数0 〜 3(初期値 1)
位置による遅れ0 〜 0.3(初期値 0.08)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

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