xy-平面上の変換を 3×3-型の行列であらわすことにします.2-次元空間上の変換なら 2×2-型の行列を使いそうなものですが,平行移動まで包括的に行列で表現する都合上 1 つ余分な次元をもうけます.
(1)
原点中心,角度 α だけ回転する変換:
R(α)=⎝⎛cosαsinα0−sinαcosα0001⎠⎞
(2)
x-軸方向へ a,y-軸方向へ b だけ平行移動する変換:
T(a,b)=⎝⎛100010ab1⎠⎞
(この変換を表現するために余分な第 3 の次元が必要)
平面上の任意の合同変換は,回転変換,平行移動の合成として表現できるので,上の 2 つの変換をくみ合わせれば必要な変換はすべて実現できるはずです.
一例として,テトリミノを反時計まわりに 90∘ 回転する変換を実現してみます.前提として,テトリミノは 4×4 の大きさの配列に,たとえば次のように格納されているものとします.
■□□□■■□□□■□□□□□□
ただし配列のインデックスは 0,1,2,3 です.
問題の変換を実現するには,点 (23,23) を中心に 2π だけ回転すればよいです.そのためには
(1) (−23,−23) だけ平行移動してミノの中心を原点へ移動,
(2) 原点を中心に 2π だけ回転,
(3) (23,23) だけ平行移動して元の位置へもどす
という 3 つの変換を合成します.
T(23,23)R(2π)T(−23,−23)=⎝⎛10001023231⎠⎞⎝⎛cos2πsin2π0−sin2πcos2π0001⎠⎞⎝⎛100010−23−231⎠⎞=⎝⎛010−100301⎠⎞
これがテトリミノを回転する変換行列です.関数の形で書くなら (x,y)↦(−y+3, x) という関数です.
他の変換が必要になったときもこういう要領で求められると思います.