ぱっと思いつかなかったのでメモ.

任意の単位ベクトルへの射影行列

任意の単位ベクトルを$\vec{n}$とすると,$\vec{n}$への射影行列$P_{p}$は以下の様に表されます.

Pp=nnTP_{p} = \vec{n}\vec{n}^{T}

法線ベクトルに直交する平面への射影行列

法線ベクトルへの射影を元のベクトルから引くことで,法線ベクトルと直交する平面への射影が可能となります. そのため,法線ベクトルと直交する平面への射影行列$P_{o}$は以下のように表されます.

Po=IPp=InnT\begin{aligned} P_{o} &= I - P_{p} \\ &= I - \vec{n}\vec{n}^{T} \end{aligned}

任意の単位ベクトルを回転軸とした回転行列

任意の単位ベクトル$\vec{n}$を以下のように定義します. n=(nx,ny,nz)\vec{n} = \left(n_x, n_y, n_z \right)

ここで,Z軸方向の単位ベクトル$\vec{e_{z}}$を$\vec{n}$に変換する行列$P$を考えます.$P$はY軸回転$R_{y}$とZ軸回転$R_{z}$の積で以下のように表現できます. cθ=nxnx2+ny2sθ=nynx2+ny2cϕ=nznx2+ny2+nz2sϕ=nx2+ny2nx2+ny2+nz2Rxz=(cϕ0sϕ010sϕ0cϕ)Rxy=(cθsθ0sθcθ0001)P=RxyRxz\begin{aligned} c_{\theta} &= \frac{n_{x}}{\sqrt{n_{x}^{2} + n_{y}^{2}}} \\\\ s_{\theta} &= \frac{n_{y}}{\sqrt{n_{x}^{2} + n_{y}^{2}}} \\\\ c_{\phi} &= \frac{n_{z}}{\sqrt{n_{x}^{2} + n_{y}^{2} + n_{z}^{2}}} \\\\ s_{\phi} &= \frac{\sqrt{n_{x}^{2} + n_{y}^{2}}}{\sqrt{n_{x}^{2} + n_{y}^{2} + n_{z}^{2}}} \\\\ R_{xz} &= \left(\begin{array}{rrr} c_{\phi} & 0 & s_{\phi} \\\\ 0 & 1 & 0 \\\\ -s_{\phi}& 0 & c_{\phi} \end{array}\right)\\\\ R_{xy} &= \left(\begin{array}{rrr} c_{\theta} & -s_{\theta} & 0 \\\\ s_{\theta} & c_{\theta} & 0 \\\\ 0 & 0 & 1 \end{array}\right)\\\\ P &= R_{xy} * R_{xz} \end{aligned}

$P$によって変換されたZ軸を$\vec{e_{z}’}(=\vec{n})$とすると,所望の任意の単位ベクトルを回転軸とする回転行列は以下の3つの変換の合成で表すことができます.

  1. $\vec{e_{z}}$を$\vec{e_{z}}’$に変換する$P$
  2. $\vec{e_{z}}$を回転軸とする回転$R_{a}$
  3. $\vec{e_{z}}’$を$\vec{e_{z}}$に変換する$P^{T}$

したがって,最終的な回転行列$R$は以下のように表されます.

Ra=(cos(a)sin(a)0sin(a)cos(a)0001)R=PRaPT=(nx2+(ny2+nz2)cos(a)nxnycos(a)+nxny(nz3+(nx2+ny2)nz)sin(a)nxnzcos(a)+nxnz+nysin(a)nxnycos(a)+nxny+(nz3+(nx2+ny2)nz)sin(a)ny2+(nx2+nz2)cos(a)nynzcos(a)+nynznxsin(a)nxnzcos(a)+nxnz(nx2ny+ny3+nynz2)sin(a)nynzcos(a)+nynz+(nx3+nxny2+nxnz2)sin(a)nz2+(nx2+ny2)cos(a))=(cos(a)+nx2(1cos(a))nxny(1cos(a))nzsin(a)nxnz(1cos(a))+nysin(a)nxny(1cos(a))+nzsin(a)cos(a)+ny2(1cos(a))nynz(1cos(a))nxsin(a)nxnz(1cos(a))nysin(a)nynz(1cos(a))+nxsin(a)cos(a)+nz2(1cos(a)))\begin{aligned} R_{a} &= \left(\begin{array}{rrr} \cos\left(a\right) & -\sin\left(a\right) & 0 \\\\ \sin\left(a\right) & \cos\left(a\right) & 0 \\\\ 0 & 0 & 1 \end{array}\right) \\\\ R &= P * R_{a} * P^{T} \\\\ &= \left(\begin{array}{rrr} \mathit{n_{x}}^{2} + {\left(\mathit{n_{y}}^{2} + \mathit{n_{z}}^{2}\right)} \cos\left(a\right) & -\mathit{n_{x}} \mathit{n_{y}} \cos\left(a\right) + \mathit{n_{x}} \mathit{n_{y}} - {\left(\mathit{n_{z}}^{3} + {\left(\mathit{n_{x}}^{2} + \mathit{n_{y}}^{2}\right)} \mathit{n_{z}}\right)} \sin\left(a\right) & -\mathit{n_{x}} \mathit{n_{z}} \cos\left(a\right) + \mathit{n_{x}} \mathit{n_{z}} + \mathit{n_{y}} \sin\left(a\right) \\\\ -\mathit{n_{x}} \mathit{n_{y}} \cos\left(a\right) + \mathit{n_{x}} \mathit{n_{y}} + {\left(\mathit{n_{z}}^{3} + {\left(\mathit{n_{x}}^{2} + \mathit{n_{y}}^{2}\right)} \mathit{n_{z}}\right)} \sin\left(a\right) & \mathit{n_{y}}^{2} + {\left(\mathit{n_{x}}^{2} + \mathit{n_{z}}^{2}\right)} \cos\left(a\right) & -\mathit{n_{y}} \mathit{n_{z}} \cos\left(a\right) + \mathit{n_{y}} \mathit{n_{z}} - \mathit{n_{x}} \sin\left(a\right) \\\\ -\mathit{n_{x}} \mathit{n_{z}} \cos\left(a\right) + \mathit{n_{x}} \mathit{n_{z}} - {\left(\mathit{n_{x}}^{2} \mathit{n_{y}} + \mathit{n_{y}}^{3} + \mathit{n_{y}} \mathit{n_{z}}^{2}\right)} \sin\left(a\right) & -\mathit{n_{y}} \mathit{n_{z}} \cos\left(a\right) + \mathit{n_{y}} \mathit{n_{z}} + {\left(\mathit{n_{x}}^{3} + \mathit{n_{x}} \mathit{n_{y}}^{2} + \mathit{n_{x}} \mathit{n_{z}}^{2}\right)} \sin\left(a\right) & \mathit{n_{z}}^{2} + {\left(\mathit{n_{x}}^{2} + \mathit{n_{y}}^{2}\right)} \cos\left(a\right) \end{array}\right) \\\\ &= \left(\begin{array}{rrr} \cos\left(a\right) + \mathit{n_{x}}^{2} \left(1-\cos\left(a\right)\right) & \mathit{n_{x}} \mathit{n_{y}} \left(1 - \cos\left(a\right) \right) - \mathit{n_{z}}\sin\left(a\right) & \mathit{n_{x}} \mathit{n_{z}} \left( 1 - \cos\left(a\right) \right) + \mathit{n_{y}} \sin\left(a\right) \\\\ \mathit{n_{x}} \mathit{n_{y}}\left( 1 - \cos\left(a\right) \right) + \mathit{n_{z}} \sin\left(a\right) & \cos\left(a\right) + \mathit{n_{y}}^{2}\left( 1- \cos\left(a\right)\right) & \mathit{n_{y}} \mathit{n_{z}} \left( 1- \cos\left(a\right) \right) - \mathit{n_{x}} \sin\left(a\right) \\\\ \mathit{n_{x}} \mathit{n_{z}}\left(1- \cos\left(a\right) \right) - \mathit{n_{y}}\sin\left(a\right) & \mathit{n_{y}} \mathit{n_{z}} \left(1- \cos\left(a\right) \right) + \mathit{n_{x}}\sin\left(a\right) & \cos\left(a\right) + \mathit{n_{z}}^{2} \left( 1-\cos\left(a\right) \right) \end{array}\right) \end{aligned}