loop-animation

網点Halftone Waves

印刷の網点のように並んだ点の大きさを、円軌道を回る波源から広がる波の重ね合わせで変化させます。

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

印刷の網点のように並んだ点の大きさを、周回する波源からの干渉波で変化させる

このシーンで作る

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

どう計算しているか

  1. 点を「網の角度」だけ傾けた格子に並べます。座標を回転行列で回して位置を求めています。
  2. 「波源の数」だけの点を、半径「波源の軌道」の円周上に等間隔に置き、t に合わせて回します。隣り合う波源は逆向きに回ります。
  3. 各網点では、それぞれの波源からの距離 r を使って sin(2π(r·細かさ − 1ループの波の数·t)) を足し合わせ、平均をとります。波が重なって強め合う所と弱め合う所ができます(干渉)。
  4. 平均値を「コントラスト」で強めて0〜1の濃さにします。丸・四角・ひし形は面積が濃さに比例するよう √濃さ で大きさを決め、線では濃さで線幅を変えます。「濃さで」色分けすると濃さの段階ごとに色が変わります。
v = avg_k sin(2π(|p − s_k(t)|·f − n·t)),  size ∝ √v

ループがつながる理由

波源は1ループでちょうど1周し、波の位相は「1ループの波の数」という整数ぶん進みます。sin は整数周期ずれると同じ値に戻るので、最後のフレームが最初のフレームとつながります。

調整できるパラメータ

形

網点丸・四角・ひし形・線
分割数10 〜 90(初期値 36)
網の角度0 〜 90(初期値 45)
コントラスト0.3 〜 3(初期値 1.2)
色分け単色・濃さで

動き

波源の数1 〜 5(初期値 2)
波の細かさ1 〜 20(初期値 6)
波源の軌道0 〜 500(初期値 220)
1ループの波の数1 〜 4(初期値 1)

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