1 3次元の回転行列
定義 1.1 (3次元の回転行列).M3(R)を成分が実数である3×3行列の集合とし、RTをRの転置行列とする。条件
RTR=I,detR=1を満たす行列R∈M3(R)を 3次元の回転行列 という。3次元の回転行列全体を
SO(3)={R∈M3(R):RTR=I, detR=1}と書く。
RTR=IはRの三つの列ベクトルが互いに垂直な単位ベクトルであることを表す。この条件から、すべての列ベクトルvに対して
∥Rv∥2=(Rv)T(Rv)=vTRTRv=∥v∥2となる。さらにdetR=1は空間の向きを保つことを表す。
2 座標軸のまわりの回転
定理 2.1. 空間を右手系の座標で表し、点を列ベクトルとして回転行列を左から掛ける。正のx,y,z軸上から原点を見るときに反時計回りとなる角θの回転は、それぞれ
Rx(θ)=1000cosθsinθ0−sinθcosθ,Ry(θ)=cosθ0−sinθ010sinθ0cosθ,Rz(θ)=cosθsinθ0−sinθcosθ0001で表される。三つの行列はいずれもSO(3)に属する。
証明.x軸のまわりの回転はx座標を変えず、yz平面の列ベクトル(y,z)Tに平面の回転行列を作用させる。したがって
(x,y,z)T⟼(x, ycosθ−zsinθ, ysinθ+zcosθ)Tとなり、Rx(θ)を得る。y軸とz軸についても、回転軸の座標を固定し、残る二つの座標へ同じ平面回転を入れると、表示したRy(θ)とRz(θ)を得る。
c=cosθ、s=sinθとおく。各行列の二つの動く列では
c2+s2=1,c(−s)+sc=0であり、残る列は回転軸の単位ベクトルである。したがって三つの行列の列はそれぞれ互いに垂直な単位ベクトルであり、Rx(θ)TRx(θ)=Ry(θ)TRy(θ)=Rz(θ)TRz(θ)=Iとなる。各行列の行列式は動く2×2部分の行列式に等しく、c2+s2=1である。よって三つの行列はすべてSO(3)に属する。▨
列ベクトルには、右側の行列から先に作用します。この順序の違いは、空間では実際に結果を変えます。
例 2.2.ey=(0,1,0)Tとする。x軸のまわりにπ/2回転してからy軸のまわりにπ/2回転すると
Ry(2π)Rx(2π)ey=Ry(2π)ez=exとなる。順序を入れ替えると
Rx(2π)Ry(2π)ey=Rx(2π)ey=ezとなる。ex=ezであるから、二つの回転行列の積は一般には順序を入れ替えることができない。
3 一つの軸と一つの角による表示
定理 3.1 (オイラーの回転定理). 任意のR∈SO(3)に対して、単位ベクトルnと角θ∈[0,π]が存在し、Rn=nとなる。さらに
n⊥={v∈R3:nTv=0}はRにより保たれ、Rはこの平面をnの先端側から原点を見るときに反時計回りに角θだけ回転する。この角は
trR=1+2cosθにより一通りに定まる。
R=Iのときはθ=0であり、すべての単位ベクトルを軸に選ぶことができる。0<θ<πのときは向きをもつ軸nが一通りに定まる。θ=πのときは軸の直線が一通りに定まるが、nと−nは同じ回転を表す。
証明.R∈SO(3)をとる。RT=R−1、detR=1、および空間の次元が3であることから
det(I−R)=det((I−R)T)=det(I−R−1)=det(R−1(R−I))=−det(I−R)となる。したがってdet(I−R)=0であり、(I−R)n=0を満たす零ベクトルでないnが存在する。長さで割ることにより、Rn=nを満たす単位ベクトルnを得る。
v∈n⊥をとる。RTn=RTRn=nであるから
nTRv=(RTn)Tv=nTv=0となる。よってRv∈n⊥であり、この平面はRにより保たれる。
n⊥の単位ベクトルu,vを、(u,v,n)が右手系の互いに垂直な単位ベクトルとなるように選ぶ。この座標でRは
ab0de0001と表される。左上の2×2行列の列は互いに垂直な単位ベクトルであり、その行列式はdetR=1に等しい。したがって、あるα∈[0,2π)に対して
a=e=cosα,b=sinα,d=−sinαとなる。α≤πならθ=αとする。α>πなら軸を−nに取り替えると平面の正の向きが逆になるので、θ=2π−α∈(0,π)とする。これにより、Rは軸nのまわりの角θ∈[0,π]の回転として表される。
Q=(u v n)とおくと、この座標での行列はQTRQである。QQT=Iであり、積の対角成分を成分ごとに加える順序を入れ替えるとtr(QTRQ)=tr(RQQT)=trRとなる。したがって、表示した行列の対角成分を加えると
trR=cosθ+cosθ+1=1+2cosθとなる。[0,π]ではcosθが一つの角を定めるので、θは一通りに定まる。
θ=0ならばRはn⊥でも軸上でも恒等変換であるからR=Iであり、逆にR=Iならばすべての単位ベクトルが固定される。0<θ≤πでは平面n⊥に零ベクトル以外の固定ベクトルがないので、Rの固定ベクトル全体は軸の直線である。0<θ<πでは正の回転方向が二つの単位ベクトルn,−nの一方を定める。θ=πでは軸の向きを反対にしても同じ回転になる。▨
4 ZYXオイラー角とジンバルロック
定理 4.1. 任意のR∈SO(3)は
R=Rz(ψ)Ry(ϑ)Rx(φ)と表すことができる。ただし
−π<φ≤π,−2π≤ϑ≤2π,−π<ψ≤πとする。この表示に現れる(φ,ϑ,ψ)を ZYXオイラー角 という。
R=(rij)とし、∣r31∣<1とする。このとき
ϑ=arcsin(−r31),ψ=atan2(r21,r11),φ=atan2(r32,r33)により三つの角を回収することができる。ここでatan2(y,x)は、x2+y2>0のとき、cosα=x/x2+y2、sinα=y/x2+y2を満たす−π<α≤πの角を表す。
ϑ=π/2のとき、行列はφ−ψだけに依存する。ϑ=−π/2のとき、行列はφ+ψだけに依存する。したがって、これら二つの場合にはφとψを別々に回収することができない。この非一意性を ジンバルロック という。
証明. 実数aに対してca=cosa、sa=sinaとおく。三つの座標軸回転を掛けると
Rz(ψ)Ry(ϑ)Rx(φ)=cψcϑsψcϑ−sϑcψsϑsφ−sψcφsψsϑsφ+cψcφcϑsφcψsϑcφ+sψsφsψsϑcφ−cψsφcϑcφ.R∈SO(3)をとり、その第一列を(p1,p2,p3)Tとする。この列は単位ベクトルであるから、ϑ∈[−π/2,π/2]を
−sinϑ=p3,cosϑ=p12+p22により選ぶことができる。cosϑ>0のときは
cosψ=cosϑp1,sinψ=cosϑp2を満たすψ∈(−π,π]を選ぶ。cosϑ=0のときはp1=p2=0であるから、ψ=0とする。どちらの場合にも
Rz(ψ)Ry(ϑ)ex=(p1,p2,p3)T=Rexとなる。
A=Ry(−ϑ)Rz(−ψ)Rとおく。定理 2.1と行列の積の計算からATA=I、detA=1であり、Aex=exとなる。したがってAの第一列と第一行はともに(1,0,0)である。右下の2×2部分の二つの列は互いに垂直な単位ベクトルであり、その行列式は1であるから、あるφ∈(−π,π]に対してA=Rx(φ)となる。ゆえに
R=Rz(ψ)Ry(ϑ)Rx(φ)であり、すべての回転が ZYXオイラー角をもつ。
∣r31∣<1ならばcosϑ>0である。積の表示の第一列と第三行から
r31=−sinϑ,(r11,r21)=cosϑ(cosψ,sinψ),(r33,r32)=cosϑ(cosφ,sinφ)を得る。したがって主張した三つの式が角を回収する。
ϑ=π/2を積の行列へ代入すると
00−1sin(φ−ψ)cos(φ−ψ)0cos(φ−ψ)−sin(φ−ψ)0となる。したがってφとψの両方に同じ数を加えても回転は変わらない。ϑ=−π/2では
001−sin(φ+ψ)cos(φ+ψ)0−cos(φ+ψ)−sin(φ+ψ)0となる。したがってφにある数を加え、ψから同じ数を引いても回転は変わらない。二つの特異な場合には、三つの角の表示は一通りに定まらない。▨
5 単位球面と回転軸
定理 5.1.R∈SO(3)とし、S2={v∈R3:∥v∥=1}を単位球面とする。このときR(S2)=S2である。さらに、定理 3.1の回転軸を表す単位ベクトルをnとすると、nと−nはともにS2上の固定点である。
証明.v∈R3をとる。RTR=Iであるから
∥Rv∥2=vTRTRv=vTv=∥v∥2となる。したがって∥v∥=1ならば∥Rv∥=1であり、R(S2)⊆S2となる。R−1=RTに同じ計算を適用するとR−1(S2)⊆S2となるので、S2⊆R(S2)も成り立つ。よってR(S2)=S2である。定理 3.1によりRn=nであり、行列の作用は線形であるからR(−n)=−nとなる。よって軸と単位球面との二つの交点は固定点である。▨