§A2.173次元の回転と球面、オイラー角

最終更新

3×3行列を用いて、空間内の図形を座標軸や任意の軸のまわりに回す計算を行います。回転を重ねる順序で結果が変わることを確かめ、オイラー角とジンバルロックを結び付けます。

1 3次元の回転行列

定義 1.1 (3次元の回転行列).M3(R)M_3(\mathbb R)を成分が実数である3×33\times3行列の集合とし、RTR^{\mathsf T}をRRの転置行列とする。条件

RTR=I,det⁡R=1R^{\mathsf T}R=I,\qquad \det R=1

を満たす行列R∈M3(R)R\in M_3(\mathbb R)を 3次元の回転行列 という。3次元の回転行列全体を

SO(3)={R∈M3(R):RTR=I, det⁡R=1}SO(3)=\{R\in M_3(\mathbb R):R^{\mathsf T}R=I,\ \det R=1\}

と書く。

RTR=IR^{\mathsf T}R=IはRRの三つの列ベクトルが互いに垂直な単位ベクトルであることを表す。この条件から、すべての列ベクトルv\boldsymbol vに対して

∥Rv∥2=(Rv)T(Rv)=vTRTRv=∥v∥2\lVert R\boldsymbol v\rVert^2 =(R\boldsymbol v)^{\mathsf T}(R\boldsymbol v) =\boldsymbol v^{\mathsf T}R^{\mathsf T}R\boldsymbol v =\lVert\boldsymbol v\rVert^2

となる。さらにdet⁡R=1\det R=1は空間の向きを保つことを表す。

2 座標軸のまわりの回転

定理 2.1. 空間を右手系の座標で表し、点を列ベクトルとして回転行列を左から掛ける。正のx,y,zx,y,z軸上から原点を見るときに反時計回りとなる角θ\thetaの回転は、それぞれ

Rx(θ)=(1000cos⁡θ−sin⁡θ0sin⁡θcos⁡θ),Ry(θ)=(cos⁡θ0sin⁡θ010−sin⁡θ0cos⁡θ),R_x(\theta)= \begin{pmatrix} 1&0&0\\ 0&\cos\theta&-\sin\theta\\ 0&\sin\theta&\cos\theta \end{pmatrix},\quad R_y(\theta)= \begin{pmatrix} \cos\theta&0&\sin\theta\\ 0&1&0\\ -\sin\theta&0&\cos\theta \end{pmatrix},Rz(θ)=(cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001)R_z(\theta)= \begin{pmatrix} \cos\theta&-\sin\theta&0\\ \sin\theta&\cos\theta&0\\ 0&0&1 \end{pmatrix}

で表される。三つの行列はいずれもSO(3)SO(3)に属する。

証明.xx軸のまわりの回転はxx座標を変えず、yzyz平面の列ベクトル(y,z)T(y,z)^{\mathsf T}に平面の回転行列を作用させる。したがって

(x,y,z)T⟼(x, ycos⁡θ−zsin⁡θ, ysin⁡θ+zcos⁡θ)T(x,y,z)^{\mathsf T}\longmapsto (x,\ y\cos\theta-z\sin\theta,\ y\sin\theta+z\cos\theta)^{\mathsf T}

となり、Rx(θ)R_x(\theta)を得る。yy軸とzz軸についても、回転軸の座標を固定し、残る二つの座標へ同じ平面回転を入れると、表示したRy(θ)R_y(\theta)とRz(θ)R_z(\theta)を得る。

c=cos⁡θc=\cos\theta、s=sin⁡θs=\sin\thetaとおく。各行列の二つの動く列では

c2+s2=1,c(−s)+sc=0c^2+s^2=1,\qquad c(-s)+sc=0

であり、残る列は回転軸の単位ベクトルである。したがって三つの行列の列はそれぞれ互いに垂直な単位ベクトルであり、Rx(θ)TRx(θ)=Ry(θ)TRy(θ)=Rz(θ)TRz(θ)=IR_x(\theta)^{\mathsf T}R_x(\theta)=R_y(\theta)^{\mathsf T}R_y(\theta)=R_z(\theta)^{\mathsf T}R_z(\theta)=Iとなる。各行列の行列式は動く2×22\times2部分の行列式に等しく、c2+s2=1c^2+s^2=1である。よって三つの行列はすべてSO(3)SO(3)に属する。▨

列ベクトルには、右側の行列から先に作用します。この順序の違いは、空間では実際に結果を変えます。

例 2.2.ey=(0,1,0)T\boldsymbol e_y=(0,1,0)^{\mathsf T}とする。xx軸のまわりにπ/2\pi/2回転してからyy軸のまわりにπ/2\pi/2回転すると

Ry(π2)Rx(π2)ey=Ry(π2)ez=exR_y\left(\frac{\pi}{2}\right)R_x\left(\frac{\pi}{2}\right)\boldsymbol e_y =R_y\left(\frac{\pi}{2}\right)\boldsymbol e_z =\boldsymbol e_x

となる。順序を入れ替えると

Rx(π2)Ry(π2)ey=Rx(π2)ey=ezR_x\left(\frac{\pi}{2}\right)R_y\left(\frac{\pi}{2}\right)\boldsymbol e_y =R_x\left(\frac{\pi}{2}\right)\boldsymbol e_y =\boldsymbol e_z

となる。ex≠ez\boldsymbol e_x\ne\boldsymbol e_zであるから、二つの回転行列の積は一般には順序を入れ替えることができない。

3 一つの軸と一つの角による表示

定理 3.1 (オイラーの回転定理). 任意のR∈SO(3)R\in SO(3)に対して、単位ベクトルn\boldsymbol nと角θ∈[0,π]\theta\in[0,\pi]が存在し、Rn=nR\boldsymbol n=\boldsymbol nとなる。さらに

n⊥={v∈R3:nTv=0}\boldsymbol n^\perp=\{\boldsymbol v\in\mathbb R^3:\boldsymbol n^{\mathsf T}\boldsymbol v=0\}

はRRにより保たれ、RRはこの平面をn\boldsymbol nの先端側から原点を見るときに反時計回りに角θ\thetaだけ回転する。この角は

tr⁡R=1+2cos⁡θ\operatorname{tr}R=1+2\cos\theta

により一通りに定まる。

R=IR=Iのときはθ=0\theta=0であり、すべての単位ベクトルを軸に選ぶことができる。0<θ<π0<\theta<\piのときは向きをもつ軸n\boldsymbol nが一通りに定まる。θ=π\theta=\piのときは軸の直線が一通りに定まるが、n\boldsymbol nと−n-\boldsymbol nは同じ回転を表す。

証明.R∈SO(3)R\in SO(3)をとる。RT=R−1R^{\mathsf T}=R^{-1}、det⁡R=1\det R=1、および空間の次元が33であることから

det⁡(I−R)=det⁡((I−R)T)=det⁡(I−R−1)=det⁡(R−1(R−I))=−det⁡(I−R)\begin{aligned} \det(I-R) &=\det\bigl((I-R)^{\mathsf T}\bigr) =\det(I-R^{-1})\\ &=\det\bigl(R^{-1}(R-I)\bigr) =-\det(I-R) \end{aligned}

となる。したがってdet⁡(I−R)=0\det(I-R)=0であり、(I−R)n=0(I-R)\boldsymbol n=\boldsymbol 0を満たす零ベクトルでないn\boldsymbol nが存在する。長さで割ることにより、Rn=nR\boldsymbol n=\boldsymbol nを満たす単位ベクトルn\boldsymbol nを得る。

v∈n⊥\boldsymbol v\in\boldsymbol n^\perpをとる。RTn=RTRn=nR^{\mathsf T}\boldsymbol n=R^{\mathsf T}R\boldsymbol n=\boldsymbol nであるから

nTRv=(RTn)Tv=nTv=0\boldsymbol n^{\mathsf T}R\boldsymbol v =(R^{\mathsf T}\boldsymbol n)^{\mathsf T}\boldsymbol v =\boldsymbol n^{\mathsf T}\boldsymbol v=0

となる。よってRv∈n⊥R\boldsymbol v\in\boldsymbol n^\perpであり、この平面はRRにより保たれる。

n⊥\boldsymbol n^\perpの単位ベクトルu,v\boldsymbol u,\boldsymbol vを、(u,v,n)(\boldsymbol u,\boldsymbol v,\boldsymbol n)が右手系の互いに垂直な単位ベクトルとなるように選ぶ。この座標でRRは

(ad0be0001)\begin{pmatrix} a&d&0\\ b&e&0\\ 0&0&1 \end{pmatrix}

と表される。左上の2×22\times2行列の列は互いに垂直な単位ベクトルであり、その行列式はdet⁡R=1\det R=1に等しい。したがって、あるα∈[0,2π)\alpha\in[0,2\pi)に対して

a=e=cos⁡α,b=sin⁡α,d=−sin⁡αa=e=\cos\alpha,\qquad b=\sin\alpha,\qquad d=-\sin\alpha

となる。α≤π\alpha\leq\piならθ=α\theta=\alphaとする。α>π\alpha>\piなら軸を−n-\boldsymbol nに取り替えると平面の正の向きが逆になるので、θ=2π−α∈(0,π)\theta=2\pi-\alpha\in(0,\pi)とする。これにより、RRは軸n\boldsymbol nのまわりの角θ∈[0,π]\theta\in[0,\pi]の回転として表される。

Q=(u v n)Q=(\boldsymbol u\ \boldsymbol v\ \boldsymbol n)とおくと、この座標での行列はQTRQQ^{\mathsf T}RQである。QQT=IQQ^{\mathsf T}=Iであり、積の対角成分を成分ごとに加える順序を入れ替えるとtr⁡(QTRQ)=tr⁡(RQQT)=tr⁡R\operatorname{tr}(Q^{\mathsf T}RQ)=\operatorname{tr}(RQQ^{\mathsf T})=\operatorname{tr}Rとなる。したがって、表示した行列の対角成分を加えると

tr⁡R=cos⁡θ+cos⁡θ+1=1+2cos⁡θ\operatorname{tr}R=\cos\theta+\cos\theta+1=1+2\cos\theta

となる。[0,π][0,\pi]ではcos⁡θ\cos\thetaが一つの角を定めるので、θ\thetaは一通りに定まる。

θ=0\theta=0ならばRRはn⊥\boldsymbol n^\perpでも軸上でも恒等変換であるからR=IR=Iであり、逆にR=IR=Iならばすべての単位ベクトルが固定される。0<θ≤π0<\theta\leq\piでは平面n⊥\boldsymbol n^\perpに零ベクトル以外の固定ベクトルがないので、RRの固定ベクトル全体は軸の直線である。0<θ<π0<\theta<\piでは正の回転方向が二つの単位ベクトルn,−n\boldsymbol n,-\boldsymbol nの一方を定める。θ=π\theta=\piでは軸の向きを反対にしても同じ回転になる。▨

4 ZYXオイラー角とジンバルロック

定理 4.1. 任意のR∈SO(3)R\in SO(3)は

R=Rz(ψ)Ry(ϑ)Rx(φ)R=R_z(\psi)R_y(\vartheta)R_x(\varphi)

と表すことができる。ただし

−π<φ≤π,−π2≤ϑ≤π2,−π<ψ≤π-\pi<\varphi\leq\pi,\qquad -\frac{\pi}{2}\leq\vartheta\leq\frac{\pi}{2},\qquad -\pi<\psi\leq\pi

とする。この表示に現れる(φ,ϑ,ψ)(\varphi,\vartheta,\psi)を ZYXオイラー角 という。

R=(rij)R=(r_{ij})とし、∣r31∣<1|r_{31}|<1とする。このとき

ϑ=arcsin⁡(−r31),ψ=atan2⁡(r21,r11),φ=atan2⁡(r32,r33)\vartheta=\arcsin(-r_{31}),\qquad \psi=\operatorname{atan2}(r_{21},r_{11}),\qquad \varphi=\operatorname{atan2}(r_{32},r_{33})

により三つの角を回収することができる。ここでatan2⁡(y,x)\operatorname{atan2}(y,x)は、x2+y2>0x^2+y^2>0のとき、cos⁡α=x/x2+y2\cos\alpha=x/\sqrt{x^2+y^2}、sin⁡α=y/x2+y2\sin\alpha=y/\sqrt{x^2+y^2}を満たす−π<α≤π-\pi<\alpha\leq\piの角を表す。

ϑ=π/2\vartheta=\pi/2のとき、行列はφ−ψ\varphi-\psiだけに依存する。ϑ=−π/2\vartheta=-\pi/2のとき、行列はφ+ψ\varphi+\psiだけに依存する。したがって、これら二つの場合にはφ\varphiとψ\psiを別々に回収することができない。この非一意性を ジンバルロック という。

証明. 実数aaに対してca=cos⁡ac_a=\cos a、sa=sin⁡as_a=\sin aとおく。三つの座標軸回転を掛けると

Rz(ψ)Ry(ϑ)Rx(φ)=(cψcϑcψsϑsφ−sψcφcψsϑcφ+sψsφsψcϑsψsϑsφ+cψcφsψsϑcφ−cψsφ−sϑcϑsφcϑcφ).R_z(\psi)R_y(\vartheta)R_x(\varphi) =\begin{pmatrix} c_\psi c_\vartheta&c_\psi s_\vartheta s_\varphi-s_\psi c_\varphi&c_\psi s_\vartheta c_\varphi+s_\psi s_\varphi\\ s_\psi c_\vartheta&s_\psi s_\vartheta s_\varphi+c_\psi c_\varphi&s_\psi s_\vartheta c_\varphi-c_\psi s_\varphi\\ -s_\vartheta&c_\vartheta s_\varphi&c_\vartheta c_\varphi \end{pmatrix}.

R∈SO(3)R\in SO(3)をとり、その第一列を(p1,p2,p3)T(p_1,p_2,p_3)^{\mathsf T}とする。この列は単位ベクトルであるから、ϑ∈[−π/2,π/2]\vartheta\in[-\pi/2,\pi/2]を

−sin⁡ϑ=p3,cos⁡ϑ=p12+p22-\sin\vartheta=p_3, \qquad \cos\vartheta=\sqrt{p_1^2+p_2^2}

により選ぶことができる。cos⁡ϑ>0\cos\vartheta>0のときは

cos⁡ψ=p1cos⁡ϑ,sin⁡ψ=p2cos⁡ϑ\cos\psi=\frac{p_1}{\cos\vartheta}, \qquad \sin\psi=\frac{p_2}{\cos\vartheta}

を満たすψ∈(−π,π]\psi\in(-\pi,\pi]を選ぶ。cos⁡ϑ=0\cos\vartheta=0のときはp1=p2=0p_1=p_2=0であるから、ψ=0\psi=0とする。どちらの場合にも

Rz(ψ)Ry(ϑ)ex=(p1,p2,p3)T=RexR_z(\psi)R_y(\vartheta)\boldsymbol e_x =(p_1,p_2,p_3)^{\mathsf T} =R\boldsymbol e_x

となる。

A=Ry(−ϑ)Rz(−ψ)RA=R_y(-\vartheta)R_z(-\psi)Rとおく。定理 2.1と行列の積の計算からATA=IA^{\mathsf T}A=I、det⁡A=1\det A=1であり、Aex=exA\boldsymbol e_x=\boldsymbol e_xとなる。したがってAAの第一列と第一行はともに(1,0,0)(1,0,0)である。右下の2×22\times2部分の二つの列は互いに垂直な単位ベクトルであり、その行列式は11であるから、あるφ∈(−π,π]\varphi\in(-\pi,\pi]に対してA=Rx(φ)A=R_x(\varphi)となる。ゆえに

R=Rz(ψ)Ry(ϑ)Rx(φ)R=R_z(\psi)R_y(\vartheta)R_x(\varphi)

であり、すべての回転が ZYXオイラー角をもつ。

∣r31∣<1|r_{31}|<1ならばcos⁡ϑ>0\cos\vartheta>0である。積の表示の第一列と第三行から

r31=−sin⁡ϑ,(r11,r21)=cos⁡ϑ(cos⁡ψ,sin⁡ψ),r_{31}=-\sin\vartheta, \qquad (r_{11},r_{21})=\cos\vartheta(\cos\psi,\sin\psi),(r33,r32)=cos⁡ϑ(cos⁡φ,sin⁡φ)(r_{33},r_{32})=\cos\vartheta(\cos\varphi,\sin\varphi)

を得る。したがって主張した三つの式が角を回収する。

ϑ=π/2\vartheta=\pi/2を積の行列へ代入すると

(0sin⁡(φ−ψ)cos⁡(φ−ψ)0cos⁡(φ−ψ)−sin⁡(φ−ψ)−100)\begin{pmatrix} 0&\sin(\varphi-\psi)&\cos(\varphi-\psi)\\ 0&\cos(\varphi-\psi)&-\sin(\varphi-\psi)\\ -1&0&0 \end{pmatrix}

となる。したがってφ\varphiとψ\psiの両方に同じ数を加えても回転は変わらない。ϑ=−π/2\vartheta=-\pi/2では

(0−sin⁡(φ+ψ)−cos⁡(φ+ψ)0cos⁡(φ+ψ)−sin⁡(φ+ψ)100)\begin{pmatrix} 0&-\sin(\varphi+\psi)&-\cos(\varphi+\psi)\\ 0&\cos(\varphi+\psi)&-\sin(\varphi+\psi)\\ 1&0&0 \end{pmatrix}

となる。したがってφ\varphiにある数を加え、ψ\psiから同じ数を引いても回転は変わらない。二つの特異な場合には、三つの角の表示は一通りに定まらない。▨

5 単位球面と回転軸

定理 5.1.R∈SO(3)R\in SO(3)とし、S2={v∈R3:∥v∥=1}S^2=\{\boldsymbol v\in\mathbb R^3:\lVert\boldsymbol v\rVert=1\}を単位球面とする。このときR(S2)=S2R(S^2)=S^2である。さらに、定理 3.1の回転軸を表す単位ベクトルをn\boldsymbol nとすると、n\boldsymbol nと−n-\boldsymbol nはともにS2S^2上の固定点である。

証明.v∈R3\boldsymbol v\in\mathbb R^3をとる。RTR=IR^{\mathsf T}R=Iであるから

∥Rv∥2=vTRTRv=vTv=∥v∥2\lVert R\boldsymbol v\rVert^2 =\boldsymbol v^{\mathsf T}R^{\mathsf T}R\boldsymbol v =\boldsymbol v^{\mathsf T}\boldsymbol v =\lVert\boldsymbol v\rVert^2

となる。したがって∥v∥=1\lVert\boldsymbol v\rVert=1ならば∥Rv∥=1\lVert R\boldsymbol v\rVert=1であり、R(S2)⊆S2R(S^2)\subseteq S^2となる。R−1=RTR^{-1}=R^{\mathsf T}に同じ計算を適用するとR−1(S2)⊆S2R^{-1}(S^2)\subseteq S^2となるので、S2⊆R(S2)S^2\subseteq R(S^2)も成り立つ。よってR(S2)=S2R(S^2)=S^2である。定理 3.1によりRn=nR\boldsymbol n=\boldsymbol nであり、行列の作用は線形であるからR(−n)=−nR(-\boldsymbol n)=-\boldsymbol nとなる。よって軸と単位球面との二つの交点は固定点である。▨