利用三維旋轉矩陣在空間中旋轉平面

deeebug發表於2016-03-24

問題描述:

三維空間內,給定一個矩形平面,矩形中心點不變進行旋轉,已知面旋轉前後的法向,和四個點的座標,求旋轉後的四點座標。 


三維旋轉矩陣見維基百科 

\mathcal{M}(\hat{\mathbf{v}},\theta) = \begin{bmatrix}   \cos \theta + (1 - \cos \theta) x^2 & (1 - \cos \theta) x y - (\sin \theta) z  & (1 - \cos \theta) x z + (\sin \theta) y  \\   (1 - \cos \theta) y x + (\sin \theta) z  & \cos \theta + (1 - \cos \theta) y^2 & (1 - \cos \theta) y z - (\sin \theta) x\\   (1 - \cos \theta) z x - (\sin \theta) y & (1 - \cos \theta) z y + (\sin \theta) x & \cos \theta + (1 - \cos \theta) z^2 \end{bmatrix}

所圍繞的單位向量r = (x,y,z)意思是一個向量的旋轉總是要圍繞著一個軸旋轉,已知旋轉中心不是一個軸,這個軸可以是座標軸,或者單位向量r

問題中單位向量的求法:旋轉前後的法向叉乘,結果單位化即可

在運算於向量r上的時候,這等價於Rodrigues旋轉公式

\mathcal{M} \cdot \mathbf{r} = \mathbf{r} \,\cos(\theta)+\hat{\mathbf{v}}\times \mathbf{r}\, \sin(\theta)+(\hat{\mathbf{v}}\cdot\mathbf{r})\hat{\mathbf{v}}(1-\cos(\theta))


回到問題解答,旋轉前點的座標A,矩形中心點座標O,構成vector(O,A),vector即上面的r。


相關文章