loop-animation

三角・六角タイルTri / Hex Tiling

三角形や六角形の敷き詰めが位置ごとの時間差で回転し、重なった部分をXOR合成で抜いて模様を作ります。

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

三角形や六角形の敷き詰めがそれぞれ回転し、XOR合成で重なりが抜けて模様が生まれる

このシーンで作る

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

どう計算しているか

  1. 「敷き詰め」で三角形か六角形を選びます。三角形は上向きと下向きを交互に並べ、六角形は奇数列を半段ずらした格子に並べます。
  2. 各タイルは中心のまわりで「回転ステップ」×(360°÷頂点数)だけ回ります。三角形なら120°、六角形なら60°が1ステップです。
  3. 「タイルの大きさ」を1より大きくするとタイル同士が重なります。「XOR合成」をオンにすると、重なった部分が透明に抜け、回転に合わせて抜け方が変わります。
  4. 回転の開始時刻は「位相のずれ方」と「ずれ量」でずらし、u = fract(t − ずれ) にイージングを掛けて使います。「伸縮」は 0.5 − 0.5·cos(2πe) で回転中だけタイルを縮めます。
θ = θ0 ± ease(u)·turns·(360°/n),  u = fract(t − phase·spread)

ループがつながる理由

回転角は多角形の対称角の整数倍なので、回り終えたタイルは元の向きと同じ形です。伸縮も cos の1周期で元に戻るため、ループの終わりと始まりが一致します。

調整できるパラメータ

形

敷き詰め三角形・六角形
分割数2 〜 24(初期値 7)
タイルの大きさ0.3 〜 1.8(初期値 1.25)
XOR合成オン/オフ(初期値 オン)

動き

回転ステップ1 〜 3(初期値 1)
伸縮0 〜 1(初期値 0)
交互に逆回転オン/オフ(初期値 オン)
位相のずれ方同時・放射・角度・渦巻き・斜め・横・縦・市松・ランダム
ずれ量0 〜 4(初期値 0.6)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

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