loop-animation

万華鏡Kaleidoscope

扇形の中で図形を動かし、それを回転と鏡写しで円周に並べることで、万華鏡のような対称模様を作るループアニメーションです。

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

扇形の中で動く図形を鏡写しに並べる。図形は整数周波数で動くのでぴったり戻る

このシーンで作る

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

どう計算しているか

  1. 円を「分割数」個の扇形に分け、1つの扇形の中だけを描画できるようにクリップ(はみ出した部分を切り取る処理)します。
  2. 扇形の中には「シード」から決まる乱数で、基準の半径や揺れ幅、動きの周波数が異なる図形を「図形の数」だけ置きます。各図形の半径と角度は sin で揺れ、極座標から画面上の位置に直します。
  3. 同じ中身を角度を変えて全ての扇形に描きます。「鏡写し」がオンのときは1つおきに上下を反転して描くので、隣り合う扇形の境目が線対称になります。
  4. 「動きの速さ」は全ての周波数に掛かる倍率で、「全体の回転」は模様全体をゆっくり回します。
r = r0 + dr·sin(2π·fr·u),  a = wedge·(0.5 + 0.45·sin(2π·fa·u))

ループがつながる理由

図形の位置と向きは、周波数が整数の sin と回転だけで決まるので、1ループで必ず元の値に戻ります。全体の回転は模様の繰り返し単位(鏡写しなしなら扇形1つ、ありなら2つ、分割数が奇数で鏡写しなら1周)の整数倍だけ回すので、つなぎ目が見えません。

調整できるパラメータ

形

分割数3 〜 24(初期値 8)
鏡写しオン/オフ(初期値 オン)
図形丸・四角・三角・六角形・ひし形・十字・星・リング・線・半円
図形の数1 〜 30(初期値 9)
大きさ10 〜 160(初期値 55)
シード0 〜 999(初期値 12)
塗り塗り・線
線幅0.5 〜 12(初期値 3)

動き

全体の回転-2 〜 2(初期値 0)
動きの速さ1 〜 4(初期値 1)

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