050 · トリック

latin-square

ラテン方格を濃淡に写して流す

n 種類の記号を n×n のマスに、どの行にもどの列にも一度ずつ詰めたラテン方格。記号番号をグレーの濃さに割り当てると、規則正しい格子に斜めの縞が浮かぶ。

この実装で足したところ。方格は (r * flip + c + seed) % n の巡回式で組む。n=12 を固定し、記号番号を 18〜216 の輝度ランプ12段に写す。読み込みごとに seed(縞の位相)と flip(1 か n-1)を乱択し、縞の向きを左上がりか右上がりかで振り分ける。オフセット rOff/cOff を小数で持ち、整数部を方格の読み位置、端数を描画の dx/dy に回すことで、マス単位のカクつきなく1マスぶん溶けるように流す。外周に1マスぶん余分の輪(-1..n)を描いてスクロールで削れる縁を覆い、行と列で速さをわずかにずらして縞を斜めに泳がせる。

座標の演算からそのまま格子模様を立てて時間で流す近い作りは代数で、対称を作るに、端と端をつなぐ周期的な敷き方は並べて、繋ぐにある。