代数で対称を作る
幾何の操作を介さず、数の演算から対称が出てくる。座標 x と y を XOR して、その値で塗ると、自己相似な格子模様が現れる。
各マスの座標 x ^ y を取って、下位5ビットだけ残した (x ^ y) & 31 を濃淡にする。x = y の対角線上では全桁が一致して 0 になり、& 31 で値は 32 マスごとに一周する。+ t で時間を足すと、模様がそのまま斜めにスクロールする。
対角線で折り返した三角形が、その中にまた同じ三角形を入れ子で抱えている。mask を 15 にすると周期が半分になって模様が細かくなり、63 にすると粗くなる。マスクのビット幅が、自己相似の入れ子の深さを決める。
連続な濃淡でなく、値をいくつかの段に丸めると入れ子の輪郭がはっきりする。(x ^ y) & 31 を levels 段にポスタライズして、4階調だけで塗る。XOR の桁構造がそのまま階段状の境界になる。
同じ階調の領域が、対角線で区切られた三角形の入れ子になって並ぶ。XOR を AND に変えると別の格子が出る。gx & gy は両方の桁が立っている所だけ値が大きくなるので、対角線でなく原点へ寄った塗りになる。combine に渡す which を時間で振って、XOR・AND・OR を順に切り替える。
x ^ y は対角の入れ子、x & y は原点へ集まる塊、x | y はその反転と、桁の混ぜ方を変えるだけで格子の骨格が入れ替わる。どれも2のべきごとに値が一周するので、模様は2倍・4倍の入れ子で自己相似になる。
(x ^ y) & mask の自己相似は、2のべきに対する自己相似(2-adic な対称)で、パスカルの三角形を mod 2 で塗るとシェルピンスキーの三角形が出るのと同じ理屈。x ^ y の最下位ビットは x と y の偶奇だけで決まり、次のビットは2の位だけ、というふうに各ビットが独立に効く。ビット k の模様は一辺 2^k の市松で、それを全ビットで重ねると入れ子の三角形になる。XOR の桁ごとの独立性が、縮小コピーの入れ子に対応する。
鏡映が座標を折り、回転が座標を回すのに対し、XOR はビットを混ぜる。それでも「一部が全体を決める」同じ自己相似に着く。対称性は座標を折る操作にも、ビットを混ぜる演算にも宿る。