loop-animation

リボンTwisted Ribbon

幅のある帯がねじれながら流れ、表と裏の色の切り替わりと陰影で立体感を出しています。

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

幅のある帯がねじれながら流れ、表と裏の色が交互に見える。陰影で立体感が出る

このシーンで作る

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

どう計算しているか

  1. 帯の中心線を、波(横に流れる sin 曲線)、輪(楕円に小さな波を重ねたもの)、8の字(x = sin s、y = sin 2s)のいずれかで決め、240 個の小さな区間に分けます。
  2. 各区間で進行方向に垂直な向き(法線)を求め、その向きに 「帯の幅」/2 × cos(角度) だけ広げて四角形を作ります。角度は 2π(「ねじれの数」·s − 「1ループの流れ」·t) なので、帯は場所によって細く見え、ねじれが流れていきます。
  3. cos が正なら表の色、負なら裏の色で塗り、帯が真横を向く(cos が 0 に近い)ところほど黒を混ぜて暗くします。暗さの最大値は「陰影」で調整します。
  4. 帯が複数あるときは、波では縦に並べ、輪と8の字では大きさを少しずつ変えて重ねます。「帯ごとの時間差」で帯ごとの位相をずらします。
辺 = 中心 ± n̂·(w/2)·cos(2π(twists·s − cycles·t))

ループがつながる理由

ねじれの角度も中心線のうねりも、時間の項は整数 × t です。そのため t=1 で角度がちょうど整数回転し、帯の形と色が最初と一致します。輪と8の字では「ねじれの数」も整数なので、帯の継ぎ目でも途切れません。

調整できるパラメータ

形

経路波・輪・8の字
本数1 〜 10(初期値 4)
帯の幅10 〜 200(初期値 70)
うねり0 〜 300(初期値 90)
陰影0 〜 1(初期値 0.55)

動き

ねじれの数1 〜 12(初期値 3)
1ループの流れ1 〜 4(初期値 1)
帯ごとの時間差0 〜 1(初期値 0.2)

同じ分類のシーン(線・波)