loop-animation

振り子の波Pendulum Wave

1ループの往復回数が1回ずつ違う振り子を並べ、揃っては崩れる波や渦のような模様をつくるループです。

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

1ループの往復回数が1つずつ違う振り子の列。ずれては揃い、波や渦が現れては消える

このシーンで作る

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

どう計算しているか

  1. i 番目の振り子は周波数 f = 「最も遅い往復回数」 + i·「隣との差」で振動し、その振れは cos(2π f t) で表します。
  2. 「配置」が横一列なら、玉の縦位置を cos の値に「振れ幅」を掛けて決めます。放射なら i に応じた角度の方向へ、中心からの距離を cos の値に合わせて伸び縮みさせます。
  3. 振り子を選ぶと、cos の値を糸の角度に変換し、上の支点から吊るした玉の位置を sin・cos で求めます。
  4. 隣同士の周波数が少しずつ違うので位相が徐々にずれ、玉を結んだ線が波打ったりらせん状に見えたりします。ある瞬間にはすべての位相が揃い、一直線に戻ります。
y_i = A·cos(2π(base + i·step)·t)

ループがつながる理由

各振り子の周波数がすべて整数なので、t = 1 で全員がちょうど整数回往復し、t = 0 と同じ一直線に揃った状態に戻ります。

調整できるパラメータ

形

配置横一列・放射・振り子
本数4 〜 80(初期値 15)
振れ幅50 〜 480(初期値 300)
玉の大きさ2 〜 40(初期値 11)
玉を線で結ぶオン/オフ(初期値 オン)
糸を描くオン/オフ(初期値 オフ)
線幅0.5 〜 8(初期値 2)

動き

最も遅い往復回数1 〜 20(初期値 1)
隣との差1 〜 3(初期値 1)

同じ分類のシーン(点・軌道)