loop-animation

十字・図と地Cross Tiles

平面をすき間なく埋める十字形が90°回転し、前半と後半で図と地が入れ替わって模様が途切れずに続きます。

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

平面を埋め尽くす十字が90°回転し、前半と後半で図と地が入れ替わる

このシーンで作る

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

どう計算しているか

  1. 十字は1辺 a の正方形5つ分の形です。中心を (2u − v, u + 2v)·a という斜めの格子に置くと、十字が重なりもすき間もなく平面を埋めます。
  2. u + v の偶奇で十字を2組に分けます。前半は一方の組を前景色で描き、残りの組は背景として見せます。後半は塗る色と組を入れ替えます。
  3. 各十字は中心のまわりで90°回転します。「位相のずれ方」と「時間差」で開始を遅らせ、clamp で進み具合を0〜1に収めてからイージングを掛けます。
  4. 「回転中の縮尺」は sin(πe) で回転の途中だけ十字の大きさを変えます。回転の始まりと終わりでは元の大きさです。
center = (2u − v, u + 2v)·a,  θ = ease(clamp(...))·90°

ループがつながる理由

十字は90°回すと元と同じ形になり、回り終えた十字の組は、塗らずに残していたもう一方の組とちょうど同じ配置の模様になります。半ループごとに図と地を入れ替えるので、ループの終わりは始まりと一致します。

調整できるパラメータ

形

十字の大きさ20 〜 200(初期値 70)
回転中の縮尺0.5 〜 1.1(初期値 1)

動き

位相のずれ方同時・放射・角度・渦巻き・斜め・横・縦・市松・ランダム
時間差0 〜 3(初期値 0.8)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

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