回転行列

回転行列の表式

単位ベクトルV=(x,y,z)の周りに角度\theta回転させる行列R=R(x,y,z,\theta)

  R=  \left(\begin{array}{ccc}  x^2(1-\cos\theta) + \cos\theta &  x y(1-\cos\theta) - z \sin\theta&  z x (1-\cos\theta) + y \sin\theta\\  x y (1-\cos\theta) + z \sin\theta&  y^2 (1-\cos\theta) + \cos\theta&  y z (1-\cos\theta) - x \sin\theta\\  z x (1-\cos\theta) - y \sin\theta&  y z (1-\cos\theta) + x \sin\theta&  z^2 (1-\cos\theta) + \cos\theta  \end{array}\right)

となります。対格成分の和は\large{S = 1 + 2\cos\theta}となります。
上記の性質を利用して、長さを変えない二つの回転行列M_1,M_2があったとき、その間の角度を求めることができます。

\large{R M_1 = M_2 \Leftrightarrow R = M_2 M_1^{-1}}

となるはずですから、M_2 M_1^{-1}の対格成分の和をSとしたとき、回転行列M_1,M_2の間の角度\theta

\large{\theta = \arccos \cfrac{S-1}{2}}

ということになります。


 

半径1の球面状に一様な確率で存在する乱数ベクトルの発生

0から1までの一様な乱数\alpha,\betaを使った、球面に等確率で存在するベクトルV

\large{  V=  \left(\begin{array}{c}  2 \beta -1\\  2 \sin (2\pi\alpha) \sqrt{\beta(1-\beta)}\\  2 \cos (2\pi\alpha) \sqrt{\beta(1-\beta)}  \end{array}\right)  }

 

乱数的回転行列

0から1までの一様な乱数 \alpha,\beta,\gamma使った、ランダムな回転行列Mは次のように表すことができる。

\large{  M=  \left(\begin{array}{ccc}  \cos(2\pi\alpha)&\sin(2\pi\alpha)&0\\  -\sin(2\pi\alpha)&\cos(2\pi\alpha)&0\\  0&0&1  \end{array}\right)   \left(\begin{array}{ccc}  1&0&0\\  0&\beta&\sqrt{\beta(1-\beta)}\\  0&-\sqrt{\beta(1-\beta)}&\beta  \end{array}\right)   \left(\begin{array}{ccc}  \cos(2\pi\gamma)&\sin(2\pi\gamma)&0\\  -\sin(2\pi\gamma)&\cos(2\pi\gamma)&0\\  0&0&1  \end{array}\right)   }