loop-animation

グリッド × 位相Ripple Grid

格子に並んだ図形が、中心からの距離などで決まる時間差をもって伸縮・回転・公転し、波紋のような動きを作ります。

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

格子に並んだ図形が、位置に応じた時間差で伸縮・回転・公転する

このシーンで作る

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

どう計算しているか

  1. 「配置」で正方格子か六方格子を選びます。六方格子では奇数行を半マスずらし、行の間隔を√3/2倍に詰めています。
  2. 各図形の位置 (x, y) から「位相のずれ方」に応じた値(放射なら中心からの距離、角度なら極座標の角度など)を求め、「ずれ量」を掛けて時間のずれにします。
  3. ずらした時刻 u = fract(t − ずれ) にイージングを掛けた値 e で動きを決めます。伸縮は 0.5 − 0.5·cos(2πe) で大きさを変え、公転は (cos 2πe, sin 2πe) の円軌道で位置をずらします。
  4. 回転は図形の対称角(四角なら90°、三角なら120°)に「回転数」を掛けた角度だけ回します。反転は横方向の倍率を cos(2πe·回転数) にして、裏返るように見せます。
  5. 「色分け」を位相にすると、時間のずれの小数部分でパレットの色を選ぶので、同じタイミングで動く図形が同じ色になります。
u = fract(t − phase(x, y)·spread),  θ = ease(u)·sym·turns

ループがつながる理由

どの動きも e = 0 と e = 1 で同じ姿になるように作られています。伸縮と公転は cos・sin の1周期、回転は図形の対称角の整数倍なので、ずらした時刻が1周して戻ったときに見た目がそろいます。

調整できるパラメータ

形

図形丸・四角・三角・六角形・ひし形・十字・星・リング・線・半円
配置正方格子・六方格子
分割数3 〜 40(初期値 11)
サイズ0.1 〜 2(初期値 0.9)
塗り塗り・線
線幅1 〜 30(初期値 4)

動き

動き伸縮・回転・公転・反転・回転+伸縮
強さ0 〜 1(初期値 0.85)
回転数1 〜 4(初期値 1)
位相のずれ方同時・放射・角度・渦巻き・斜め・横・縦・市松・ランダム
ずれ量0 〜 4(初期値 1)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

色

色分け位置・位相

同じ分類のシーン(タイル・格子)