loop-animation

放射・回転対称Polar Rings

同心円上に並んだ図形がリングごとに少しずつ遅れて回り、渦や花のような模様が浮かんでは消えるループアニメーションです。

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

同心円に並んだ図形がリングごとに時間差で回転し、渦や花が現れる

このシーンで作る

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

どう計算しているか

  1. 中心から等間隔に同心円(リング)を引き、r 番目のリングには「1周目の個数」×r 個の図形を等しい角度で並べます。外側ほど個数が増えるので、図形どうしの間隔がほぼ一定に保たれます。
  2. 各図形の位置は極座標(中心からの距離と角度で位置を表す方法)で決め、cos と sin で画面上の座標に直します。図形は円の接線方向を向くように回転させます。
  3. リングの回転量は、イージング(動きの緩急をつける関数)をかけた進み具合に「図形1個ぶんの角度 2π/n」と「回転ステップ」を掛けたものです。
  4. 「リング間の時間差」でリングごとに開始時刻をずらすため、内側から外側へ回転が波のように伝わり、渦が現れます。「交互に逆回転」をオンにすると奇数番目のリングが逆向きに回ります。
  5. 「呼吸」を上げると、リングの半径が sin で膨らんだり縮んだりします。
u = fract(t − r·lag),  θ = ease(u)·turns·2π/(base·r)

ループがつながる理由

各リングは図形1個ぶんの角度の整数倍だけ回って止まるため、1周後の並びは隣の図形が元の位置に来ただけで、見た目は最初と同じです。時間差は fract(小数部分だけを取る関数)で 0〜1 に巻き戻すので、どのリングも1ループで同じ動きをちょうど1回終えます。

調整できるパラメータ

形

図形丸・四角・三角・六角形・ひし形・十字・星・リング・線・半円
リング密度2 〜 30(初期値 9)
1周目の個数3 〜 24(初期値 6)
サイズ0.1 〜 1.5(初期値 0.55)
軌道線オン/オフ(初期値 オフ)

動き

回転ステップ1 〜 6(初期値 1)
リング間の時間差0 〜 0.3(初期値 0.05)
交互に逆回転オン/オフ(初期値 オン)
呼吸0 〜 1(初期値 0)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

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