アフィン変換
ある三次元座標 X=⎛⎝⎜xyz⎞⎠⎟ を、3×3行列 R=⎛⎝⎜R11R21R31R12R22R32R13R23R33⎞⎠⎟ で変換し、その後 t=⎛⎝⎜txtytz⎞⎠⎟ だけ平行移動して、 X′=⎛⎝⎜x′y′z′⎞⎠⎟ に写すという操作は次のように行列のかけ算と足し算で表現することが出来ます。
X′=RX+t
アフィン変換行列はこのような操作を一回の行列のかけ算だけで表現することができます。3次元であれば、ダミーの次元を一つ加えて以下のような4行4列の行列で表現します。
A=⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330txtytz1⎞⎠⎟⎟⎟=⎛⎝⎜⎜⎜R000t1⎞⎠⎟⎟⎟
アフィン変換行列
Aの4行目は常に
0,0,0,1 です。
R で示した3行3列の部分は、回転、変形、拡大縮小の作用を及ぼし、
t で示した3行1列の部分は平行移動の作用を及ぼします。変換対象となる座標
(x,y,z) にもダミーの次元を一つ加え、最後の成分は
1 として、以下のような変換を施します。
A⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟=⎛⎝⎜⎜⎜R11x+R12y+R13z+txR21x+R22y+R23z+tyR31x+R32y+R33z+tz1⎞⎠⎟⎟⎟=⎛⎝⎜⎜⎜R⎛⎝⎜xyz⎞⎠⎟+t1⎞⎠⎟⎟⎟
変換後のベクトルの前半3つの成分は変換後の座標に対応し、最後の成分は必ず
1 になります。アフィン変換は、次元が1つ増えてわずかに計算量が増えるというデメリットはあるものの、回転、変形、拡大縮小だけでなく平行移動も1回の行列乗算で計算できてしまうという大きなメリットがあります。
例えば、
A=⎛⎝⎜⎜⎜cos(π/3)sin(π/3)00−sin(π/3)cos(π/3)0000101/41/201⎞⎠⎟⎟⎟
というアフィン変換は、Z軸の周りに
π/3 だけ回転して、さらにX軸方向とY軸方向にそれぞれ1/4と1/2だけ平行移動するという変換を意味しています。便利ですね。
アフィン変換は結晶学に限らず非常に幅広い分野で使われており、特にコンピュータグラフィクス分野では必須の手法です。
ユークリッド変換 (対称操作)
さて、結晶学における「対称操作」というのもアフィン変換の一種です。ただし、その操作によって体積が変わったり変形したりしてはいけません。原子のサイズが変わってしまったら大変ですよね。体積や変形を伴わないということは、アフィン変換によって写る任意の二点のユークリッド距離が変化しないということと等価です。細かい話をすっ飛ばすと、アフィン変換が次の二つの条件を満たすときにユークリッド距離が保存されます。
- Rijの行列式が1か-1であること
R11R22R33+R12R23R31+R13R32R21−R13R22R31−R11R32R23−R13R21R33=±1
- 任意の行列 Xに対して、次の式を満たすような行列 Pが存在すること
AX=P−1XP
一つ目の条件は、この変換が面積や体積を変えないような変換(等積アフィン変換: equi-affine)であることを保証します。行列式が1ならば右手は右手のまま、-1ならば左手に変換されます。ただし、面積や体積が変わらなくても変形を伴うかもしれません(底辺の長さと高さは同じだが形状の異なる平行四辺形を想像してください)。
二つ目の条件は変形を伴わないことを保証するもので、相似変換(similarity transformation)といったりもします。詳しい理屈は線形代数の教科書を読んで学んでください。
任意の2点間の距離を保つアフィン変換のことをユークリッド変換(Euclidean transformation)といいます。結晶学における対称操作の行列表現に対応します。
対称操作の分類
3次元のユークリッド変換もとい対称操作は自由度、向きの保存、並進性の観点から以下のように分類することが出来ます。
自由度というのは、何個のパラメータを与えたらその変換が一意に決まるか、という数です。例えば恒等変換は、要するに4行4列の単位行列であり行列成分を1つもいじることは出来ません。自由度ゼロです。回転の場合は、回転軸の方向を指定するのに2つ、空間中の位置を指定するために2つ、回転量の指定に1つ、合計5つの自由度があります。映進の場合は面の法線方向を指定するのに2つ、原点から面までの距離で1つ、並進の方向と量で1つずつ、合計5つです。
表中の上の五つの操作は、並進を伴いません。繰り返し作用させればいつかは元の場所に戻ってきます。このような操作を組み合わせて群を作ったものが「点群」です。下の三つの操作は並進を伴います。これらを全部混ぜて組み合わせると「空間群」が出来上がります。組み合わせ方なんて無限にありそうなものなのですが、3次元の空間群はわずか230個だけです。いい加減な組み合わせ方をすると群の要件を満たさなくなってしまうんですね。
ザイツ記号
4行4列の行列で表現するアフィン変換の表現は、計算の詳細が把握しやすい一方で、記述する際にはたくさんのスペースを消費してしまいます。省スペースで対称操作を表現したいときは、ザイツ記法 (Seitz notation, Seitz symbol) とよばれる表現が便利です。この記法では、対称操作を以下のように表現します。
{R|t}
R は線形操作に対応し、
t は並進操作に対応します。この記法にはいくつか流儀があるのですが、ここではITAで採用されている流儀 (Table 1.4.2.1-3)を説明します。
R には、原点を不動とする回転操作あるいは回反操作に加えて、下付き文字で軸の方向を、上付き文字で回転方向の符号を記入します。ただし恒等変換 (
1)、対称心 (
1¯)、2回回転 (
2)および鏡映操作 (
m)の場合は回転方向は不要です。例えば、
3¯+111 という記号の意味は、
[111] 軸方向に
+ 方向 (右ネジ方向)で3回回反操作 (120度回転し対称心)するということです。行列で示すと
3¯+111=⎛⎝⎜0−1000−1−100⎞⎠⎟
ということになります。
t は3方向の並進量をカンマで結んで
12,12,0 のように表現します。ただし、並進量が全て0の場合は単に
0とします。例えば、
{3¯+111|12,12,0} というザイツ記号を4行4列アフィン行列で表現すると、以下のようになります。
{3¯+111|12,12,0}=⎛⎝⎜⎜⎜⎜0−10000−10−1000121201⎞⎠⎟⎟⎟⎟
なおザイツ記号は、単位格子ベクトルを規定とする空間 (すなわち分率座標空間)に対して使用します。当然軸の方向や並進量も単位格子ベクトル (a,b,c)を基準とした倍数で表されていることにご注意ください。
以下に、3次元の結晶で許されるザイツ記号の Rの表記の全てを表にまとめました。
三斜・単斜・直方・正方・立方晶系の場合
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 1 | x,y,z | 1 | | 1 |
| 2 | x¯,y¯,z | 2 | 0,0,z | 2001 |
| 3 | x¯,y,z¯ | 2 | 0,y,0 | 2010 |
| 4 | x,y¯,z¯ | 2 | x,0,0 | 2100 |
| 5 | z,x,y | 3+ | x,x,x | 3+111 |
| 6 | z,x¯,y¯ | 3+ | x¯,x,x¯ | 3+1¯11¯ |
| 7 | z¯,x¯,y | 3+ | x,x¯,x¯ | 3+11¯1¯ |
| 8 | z¯,x,y¯ | 3+ | x¯,x¯,x | 3+1¯1¯1 |
| 9 | y,z,x | 3− | x,x,x | 3−111 |
| 10 | y¯,z,x¯ | 3− | x,x¯,x¯ | 3−11¯1¯ |
| 11 | y,z¯,x¯ | 3− | x¯,x¯,x | 3−1¯1¯1 |
| 12 | y¯,z¯,x | 3− | x¯,x,x¯ | 3−1¯11¯ |
| 13 | y,x,z¯ | 2 | x,x,0 | 2110 |
| 14 | y¯,x¯,z¯ | 2 | x,x¯,0 | 211¯0 |
| 15 | y,x¯,z | 4− | 0,0,z | 4−001 |
| 16 | y¯,x,z | 4+ | 0,0,z | 4+001 |
| 17 | x,z,y¯ | 4− | x,0,0 | 4−100 |
| 18 | x¯,z,y | 2 | 0,y,y | 2011 |
| 19 | x¯,z¯,y¯ | 2 | 0,y,y¯ | 2011¯ |
| 20 | x,z¯,y | 4+ | x,0,0 | 4+100 |
| 21 | z,y,x¯ | 4+ | 0,y,0 | 4+010 |
| 22 | z,y¯,x | 2 | x,0,x | 2101 |
| 23 | z¯,y,x | 4− | 0,y,0 | 4−010 |
| 24 | z¯,y¯,x¯ | 2 | x¯,0,x | 21¯01 |
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 25 | x¯,y¯,z¯ | 1¯ | | 1¯ |
| 26 | x,y,z¯ | m | x,y,0 | m001 |
| 27 | x,y¯,z | m | x,0,z | m010 |
| 28 | x¯,y,z | m | 0,y,z | m100 |
| 29 | z¯,x¯,y¯ | 3¯+ | x,x,x | 3¯+111 |
| 30 | z¯,x,y | 3¯+ | x¯,x,x¯ | 3¯+1¯11¯ |
| 31 | z,x,y¯ | 3¯+ | x,x¯,x¯ | 3¯+11¯1¯ |
| 32 | z,x¯,y | 3¯+ | x¯,x¯,x | 3+1¯1¯1 |
| 33 | y¯,z¯,x¯ | 3¯− | x,x,x | 3¯−111 |
| 34 | y,z¯,x | 3¯− | x,x¯,x¯ | 3¯−11¯1¯ |
| 35 | y¯,z,x | 3¯− | x¯,x¯,x | 3¯−1¯1¯1 |
| 36 | y,z,x¯ | 3¯− | x¯,x,x¯ | 3¯−1¯11¯ |
| 37 | y¯,x¯,z | m | x,x¯,z | m110 |
| 38 | y,x,z | m | x,x,z | m11¯0 |
| 39 | y¯,x,z¯ | 4¯− | 0,0,z | 4¯−001 |
| 40 | y,x¯,z¯ | 4¯+ | 0,0,z | 4¯+001 |
| 41 | x¯,z¯,y | 4¯− | x,0,0 | 4¯−100 |
| 42 | x,z¯,y¯ | m | x,y,y¯ | m011 |
| 43 | x,z,y | m | x,y,y | m011¯ |
| 44 | x¯,z,y¯ | 4¯+ | x,0,0 | 4¯+100 |
| 45 | z¯,y¯,x | 4¯+ | 0,y,0 | 4¯+010 |
| 46 | z¯,y,x¯ | m | x¯,y,x | m101 |
| 47 | z,y¯,x¯ | 4¯− | 0,y,0 | 4¯−010 |
| 48 | z,y,x | m | x,y,x | m1¯01 |
三方晶系 (六方格子設定, Hexagonal setting) と六方晶系の場合
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 1 | x,y,z | 1 | | 1 |
| 2 | y¯,x−y,z | 3+ | 0,0,z | 3+001 |
| 3 | x¯+y,x¯,z | 3− | 0,0,z | 3−001 |
| 4 | x¯,y¯,z | 2 | 0,0,z | 2001 |
| 5 | y,x¯+y,z | 6− | 0,0,z | 6−001 |
| 6 | x−y,x,z | 6+ | 0,0,z | 6+001 |
| 7 | y,x,z¯ | 2 | x,x,0 | 2110 |
| 8 | x−y,y¯,z¯ | 2 | x,0,0 | 2100 |
| 9 | x¯,x¯+y,z¯ | 2 | 0,y,0 | 2010 |
| 10 | y¯,x¯,z¯ | 2 | x,x¯,0 | 211¯0 |
| 11 | x¯+y,y,z¯ | 2 | x,2x,0 | 2120 |
| 12 | x,x−y,z¯ | 2 | 2x,x,0 | 2210 |
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 13 | x¯,y¯,z¯ | 1¯ | | 1¯ |
| 14 | y,x¯+y,z¯ | 3¯+ | 0,0,z | 3¯+001 |
| 15 | x−y,x,z¯ | 3¯− | 0,0,z | 3¯−001 |
| 16 | x,y,z¯ | m | x,y,0 | m001 |
| 17 | y¯,x−y,z¯ | 6¯− | 0,0,z | 6¯−001 |
| 18 | x¯+y,x¯,z¯ | 6¯+ | 0,0,z | 6¯+001 |
| 19 | y¯,x¯,z | m | x,x¯,z | m110 |
| 20 | x¯+y,y,z | m | x,2x,z | m100 |
| 21 | x,x−y,z | m | 2x,x,z | m010 |
| 22 | y,x,z | m | x,x,z | m11¯0 |
| 23 | x−y,y¯,z | m | x,0,z | m120 |
| 24 | x¯,x¯+y,z | m | 0,y,z | m210 |
三方晶系 (稜面格子設定, Rhombohedral setting)
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 1 | x,y,z | 1 | | 1 |
| 2 | z,x,y | 3+ | x,x,x | 3+111 |
| 3 | y,z,x | 3− | x,x,x | 3−111 |
| 4 | z¯,y¯,x¯ | 2 | x¯,0,x | 21¯01 |
| 5 | y¯,x¯,z¯ | 2 | x,x¯,0 | 211¯0 |
| 6 | x¯,z¯,y¯ | 2 | 0,y,y¯ | 2011¯ |
| No. | 写される 座標 | タイプ | 方向 | Seitz記号の Rの部分 |
|---|
| 7 | x¯,y¯,z¯ | 1¯ | | 1¯ |
| 8 | z¯,x¯,y¯ | 3¯+ | x,x,x | 3¯111 |
| 9 | z¯,x¯,y¯ | 3¯− | x,x,x | 3¯−111 |
| 10 | z,y,x | m | x,y,x | m1¯01 |
| 11 | y,x,z | m | x,x,z | m11¯0 |
| 12 | x,z,y | m | x,y,y | m011¯ |
行列とザイツ記号による対称操作の表現
全ての対称操作はアフィン変換(ユークリッド変換)で表現することが出来ます。変換対象が単位格子ベクトルを規定とする空間あれば、ザイツ記号で表現することもできます。以下に具体例を示します。
Identity (恒等変換)
単なる単位行列ということになります。
⎛⎝⎜⎜⎜1000010000100001⎞⎠⎟⎟⎟={1|0}
Inversion (対称心)
左上3×3の部分の対角成分-1, 非対角成分がゼロの行列です。
⎛⎝⎜⎜⎜−10000−10000−100001⎞⎠⎟⎟⎟={1¯|0}
Reflection (鏡映)
X軸に垂直で原点を通る鏡映
⎛⎝⎜⎜⎜−1000010000100001⎞⎠⎟⎟⎟={m100|0}
X+Y方向([110]方向)に垂直で原点を通る鏡映
⎛⎝⎜⎜⎜0−100−100000100001⎞⎠⎟⎟⎟={m110|0}
Z軸に垂直でZ=wを通る鏡映
⎛⎝⎜⎜⎜1000010000−10002w1⎞⎠⎟⎟⎟={m001|0,0,2w}
Rotation (回転)
回転軸がZ軸と一致し、回転角がθの回転操作 (一般表現)
⎛⎝⎜⎜⎜cosθsinθ00−sinθcosθ0000100001⎞⎠⎟⎟⎟
回転軸が原点を通りX+Y方向 ([110]方向)で、180∘の回転操作(=2)
⎛⎝⎜⎜⎜0100100000−100001⎞⎠⎟⎟⎟={2110|0}
回転軸が原点を通りX+Y+Z方向([111]方向)で、120∘の回転操作(=3)
⎛⎝⎜⎜⎜0100001010000001⎞⎠⎟⎟⎟={3+111|0}
一般に回転軸が原点を通り、単位ベクトル(x,y,z)と平行で、回転角がθの回転操作の一般表現は次のようになります。
⎛⎝⎜⎜⎜⎜x2(1−cosθ)+cosθxy(1−cosθ)+zsinθzx(1−cosθ)−ysinθ0xy(1−cosθ)–zsinθy2(1−cosθ)+cosθyz(1−cosθ)+xsinθ0zx(1−cosθ)+ysinθyz(1−cosθ)−xsinθz2(1−cosθ)+cosθ00001⎞⎠⎟⎟⎟⎟
Rotoinversion (回反)
Z軸と一致し、対称心が原点で、回転角がθの回反操作 (一般表現)
⎛⎝⎜⎜⎜−cosθ−sinθ00sinθ−cosθ0000−100001⎞⎠⎟⎟⎟
Z軸と一致し、対称心が原点で、次数が4の回反操作 (=4¯)
⎛⎝⎜⎜⎜0100−100000−100001⎞⎠⎟⎟⎟={4¯+001|0}
Z軸と一致し、対称心が原点で、次数が6の回反操作 (=6¯)1
⎛⎝⎜⎜⎜−1−100100000−100001⎞⎠⎟⎟⎟={6¯+001|0}
Translation (単純並進)
X,Y,Z軸にu,v,wだけ平行移動する単純並進操作
⎛⎝⎜⎜⎜100001000010uvw1⎞⎠⎟⎟⎟={1|u,v,w}
Screw (らせん)
Z 軸に一致し、回転角が90∘で、(0,0,3/4)だけ平行移動するらせん操作(=43)
⎛⎝⎜⎜⎜⎜0−1001000001000341⎞⎠⎟⎟⎟⎟={4+001|0,0,34}
Z 軸に一致し、回転角が60∘で、(0,0,1/3)だけ平行移動するらせん操作(=62)2
⎛⎝⎜⎜⎜⎜1100−1000001000131⎞⎠⎟⎟⎟⎟={6+001|0,0,13}
Z 軸に一致するNMらせん操作 (N,M は整数)
⎛⎝⎜⎜⎜⎜cos2πMsin2πM00−sin2πMcos2πM00001000M/N1⎞⎠⎟⎟⎟⎟
Glide (映進)
Z=0面と一致し、(1/2,0,0)だけ平行移動する映進操作 (= c 軸垂直な a 映進面)
⎛⎝⎜⎜⎜⎜1000010000−1012001⎞⎠⎟⎟⎟⎟={m001|12,0,0}
Z=0面と一致し、(1/4,1/4,0)だけ平行移動映進操作 (= c 軸垂直な d 映進面)
⎛⎝⎜⎜⎜⎜1000010000−10141401⎞⎠⎟⎟⎟⎟={m001|14,14,0}
X+Y方向に垂直で原点を通り、(0,0,1/2)並進する映進操作 (= [110] 垂直な c 映進面)
⎛⎝⎜⎜⎜⎜0−100−1000001000121⎞⎠⎟⎟⎟⎟={m110|0,0,12}
脚注