対称操作の行列表現

Last update:

アフィン変換

 ある三次元座標 \((x, y,z)\) をある3×3行列 \(A\) で変換し、その後 \(B=(B_x, B_y, Bz)\) だけ平行移動する操作は次のように表現することが出来ます。
$$A \begin{pmatrix}x\\y\\z\end{pmatrix} + B
$$アフィン変換行列はこのような操作を一回の行列のかけ算だけで表現することができます。3次元であれば、ダミーの次元を一つ加えて以下のような4行4列の行列で表現します。
$$M = \begin{pmatrix}
A_{11} & A_{12} & A_{13} & B_x\\
A_{21} & A_{22} & A_{23} & B_y\\
A_{31} & A_{32} & A_{33} & B_z\\
0 & 0 & 0 & 1
\end{pmatrix}= \begin{pmatrix}
\begin{matrix} \\ \large{A} \\ \\ \end{matrix} & \begin{matrix} \\ \large{B} \\ \\ \end{matrix} \\
\begin{matrix}0&0&0\end{matrix} & 1
\end{pmatrix}
$$アフィン変換行列\(M\)の4行目は常に \(0,0,0,1\) です。\(A\)で示した3行3列の部分は、回転、変形、拡大縮小の作用を及ぼし、\(B\)で示した3行1列の部分は平行移動の作用を及ぼします。変換対象となる座標\((x, y,z)\) にもダミーの次元を一つ加え、最後の成分は \(1\) として、以下のような変換を施します。
$$M \begin{pmatrix}x\\y\\z\\1\end{pmatrix} =
\begin{pmatrix}
A_{11}x+A_{12}y+A_{13}z+B_x\\
A_{21}x+A_{22}y+A_{23}z+B_y\\
A_{31}x+A_{32}y+A_{33}z+B_z\\
1\end{pmatrix} =
\begin{pmatrix} A \begin{pmatrix}x\\y\\z\end{pmatrix} + B \\ 1 \end{pmatrix}
$$変換後のベクトルの前半3つの成分は変換後の座標に対応し、最後の成分は必ず1になります。アフィン変換は、次元が1つ増えるというデメリットはあるものの、回転、変形、拡大縮小だけでなく平行移動も1回の行列乗算で計算できてしまうという大きなメリットがあります。

 例えば、
$$M = \begin{pmatrix}
\cos(\pi/3) & -\sin(\pi/3) & 0 & 1/4\\
\sin(\pi/3) & \cos(\pi/3) & 0 & 1/2\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{pmatrix}
$$というアフィン変換は、Z軸の周りに\(\pi/3\)だけ回転して、さらにX軸方向とY軸方向にそれぞれ1/4と1/2だけ平行移動するという変換を意味しています。便利ですね。

 アフィン変換は結晶学に限らず非常に幅広い分野で使われており、特にコンピュータグラフィクス分野では必須の手法です。


ユークリッド変換

 さて、結晶学における「対称操作」というのもアフィン変換の一種です。ただし、その操作によって体積が変わったり変形したりしてはいけません。原子のサイズが変わってしまったら大変ですよね。体積や変形を伴わないということは、アフィン変換によって写る任意の二点のユークリッド距離が変化しないということと等価です。細かい話をすっ飛ばすと、アフィン変換が次の二つの条件を満たすときにユークリッド距離が保存されます。

  1. \(A_{ij}\)の行列式が1か-1であること$$ A_{11}A_{22}A_{33}+A_{12}A_{23}A_{31}+A_{13}A_{32}A_{21}\\
    -A_{13}A_{22}A_{31}-A_{11}A_{32}A_{23}-A_{13}A_{21}A_{33} = \pm1$$
  2. 任意の行列 \(X\)に対して、次の式を満たすような行列 \(P\)が存在すること$$ M X = P^{-1} X P$$

 一つ目の条件は、この変換が面積や体積を変えないような変換(等積アフィン変換: equi-affine)であることを保証します。行列式が1ならば右手は右手のまま、-1ならば左手に変換されます。ただし、面積や体積が変わらなくても変形を伴うかもしれません(底辺の長さと高さは同じだが形状の異なる平行四辺形を想像してください)。

 二つ目の条件は変形を伴わないことを保証するもので、相似変換(similarity transformation)といったりもします。詳しい理屈は線形代数の教科書を読んで学んでください。

 任意の2点間の距離を保つアフィン変換のことをユークリッド変換(Euclidean transformation)といいます。結晶学における対称操作の行列表現に対応します。


ユークリッド変換の分類

 3次元のユークリッド変換は自由度、向きの保存、並進性の観点から以下のように分類することが出来ます。

Degrees of freedom
(自由度)
Preserves orientation?
(向きを保存するか?)
Translations?
(並進を伴うか?)
Identity (恒等変換)0YesNo
Inversion (対称心)3NoNo
Reflection (鏡映)3NoNo
Rotation (回転)5YesNo
Rotoinversion (回反)6NoNo
Translation (単純並進)3YesYes
Screw (らせん)6YesYes
Glide (映進)5NoYes

 自由度というのは、何個のパラメータを与えたらその変換が一意に決まるか、という数です。例えば恒等変換は、要するに4行4列の単位行列であり行列成分を1つもいじることは出来ません。自由度ゼロです。回転の場合は、回転軸の方向を指定するのに2つ、空間中の位置を指定するために2つ、回転量の指定に1つ、合計5つの自由度があります。映進の場合は面の法線方向を指定するのに2つ、原点から面までの距離で1つ、並進の方向と量で1つずつ、合計5つです。

 表中の上の五つの操作は、並進を伴いません。繰り返し作用させればいつかは元の場所に戻ってきます。このような操作を組み合わせて群を作ったものが「点群」です。下の三つの操作は並進を伴います。これらを全部混ぜて組み合わせると「空間群」が出来上がります。組み合わせ方なんて無限にありそうなものなのですが、3次元の空間群はわずか230個だけです。いい加減な組み合わせ方をすると群の要件を満たさなくなってしまうんですね。


行列による対称操作の表現

全ての対称操作はアフィン変換(ユークリッド変換)で表現することが出来ます。以下に具体例を示します。

Identity (恒等変換)

単なる単位行列ということになります。
$$\begin{pmatrix}
1&0&0&0\\
0&1&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}$$

Inversion (対称心)

左上3×3の部分の対角成分-1, 非対角成分がゼロの行列です。
$$\begin{pmatrix}
-1&0&0&0\\
0&-1&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

Reflection (鏡映)

\(X\)軸に垂直で原点を通る鏡映
$$\begin{pmatrix}
-1&0&0&0\\
0&1&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}$$

\(X+Y\)方向に垂直で原点を通る鏡映
$$\begin{pmatrix}
0&-1&0&0\\
-1&0&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}$$

\(Z\)軸に垂直で\(Z=w\)を通る鏡映
$$\begin{pmatrix}
1&0&0&0\\
0&1&0&0\\
0&0&-1&2w\\
0&0&0&1
\end{pmatrix}$$

Rotation (回転)

回転軸が\(Z\)軸と一致し、回転角が\(\theta\)の回転操作
$$\begin{pmatrix}
\cos{\theta}&-\sin{\theta}&0&0\\
\sin{\theta}&\cos{\theta}&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}$$

回転軸が原点を通り\(X+Y\)方向で、\(180^\circ\)の回転操作\((=2)\)
$$\begin{pmatrix}
0&1&0&0\\
1&0&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

回転軸が原点を通り\(X+Y+Z\)方向で、\(120^\circ\)の回転操作\((=3)\)
$$\begin{pmatrix}
0&0&1&0\\
1&0&0&0\\
0&1&0&0\\
0&0&0&1
\end{pmatrix}$$

一般に回転軸が原点を通り、単位ベクトル\((x,y,z)\)と平行で、回転角が\(\theta\)の回転操作は次のようになります。
$$\begin{pmatrix}
x^2(1-\cos\theta) +\cos\theta & x y(1-\cos\theta) – z\sin\theta & z x (1-\cos\theta) +y \sin\theta &0 \\
x y (1-\cos\theta) +z \sin\theta& y^2 (1-\cos\theta) +\cos\theta& y z (1-\cos\theta) -x \sin\theta &0 \\
z x (1-\cos\theta) -y \sin\theta& y z (1-\cos\theta) + x \sin\theta& z^2 (1-\cos\theta) +\cos\theta &0 \\
0&0&0&1
\end{pmatrix}$$

Rotoinversion (回反)

\(Z\)軸と一致し、対称心が原点で、回転角が\(\theta\)の回反操作
$$\begin{pmatrix}
-\cos{\theta}&\sin{\theta}&0&0\\
-\sin{\theta}&-\cos{\theta}&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

\(Z\)軸と一致し、対称心が原点で、次数が4の回反操作 \((=\bar{4})\)
$$\begin{pmatrix}
0&-1&0&0\\
1&0&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

\(Z\)軸と一致し、対称心が原点で、次数が6の回反操作 \((=\bar{6})\)
$$\begin{pmatrix}
1/2&\sqrt{3}/2&0&0\\
-\sqrt{3}/2&1/2&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

Translation (単純並進)

\(X, Y, Z\)軸に\(u, v, w\)だけ平行移動する単純並進操作
$$\begin{pmatrix}
1&0&0&u\\
0&1&0&v\\
0&0&1&w\\
0&0&0&1
\end{pmatrix}$$

Screw (らせん)

\(Z\) 軸に一致し、回転角が\(90^\circ\)で、\((0, 0, 3/4\))だけ平行移動するらせん操作\((=4_3\))
$$\begin{pmatrix}
0&1&0&0\\
-1&0&0&0\\
0&0&1&3/4\\
0&0&0&1
\end{pmatrix}$$

\(Z\) 軸に一致し、回転角が\(60^\circ\)で、\((0, 0, 1/3\))だけ平行移動するらせん操作\((=6_2\))
$$\begin{pmatrix}
1/2&-\sqrt{3}/2&0&0\\
\sqrt{3}/2&1/2&0&0\\
0&0&1&1/3\\
0&0&0&1
\end{pmatrix}$$

\(Z\) 軸に一致する\(N_M\)らせん操作 (\(N,M\) は整数)
$$\begin{pmatrix}
\cos{\frac{2\pi}{M}}&-\sin{\frac{2\pi}{M}}&0&0\\
\sin{\frac{2\pi}{M}}&\cos{\frac{2\pi}{M}}&0&0\\
0&0&1&M/N\\
0&0&0&1
\end{pmatrix}$$

Glide (映進)

\(Z=0\)面と一致し、\((1/2, 0, 0)\)だけ平行移動する映進操作 (= \(c\) 軸垂直な \(a\) 映進面)
$$\begin{pmatrix}
1&0&0&1/2\\
0&1&0&0\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

\(Z=0\)面と一致し、\((1/4, 1/4, 0)\)だけ平行移動映進操作 (= \(c\) 軸垂直な \(d\) 映進面)
$$\begin{pmatrix}
1&0&0&1/4\\
0&1&0&1/4\\
0&0&-1&0\\
0&0&0&1
\end{pmatrix}$$

\(X+Y\)方向に垂直で原点を通り、\((0, 0, 1/2)\)並進する映進操作 (= \([110]\) 垂直な \(c\) 映進面)
$$\begin{pmatrix}
0&-1&0&0\\
-1&0&0&0\\
0&0&1&1/2\\
0&0&0&1
\end{pmatrix}$$


Seto's Page

Stupidity has a certain charm; ignorance does not. Frank Zappa