3D中绕任意轴的旋转

作者:追风剑情 发布于:2018-7-13 21:08 分类:计算机图形学

这里讨论绕通过原点的任意轴。用单位向量n描述旋转轴,用θ描述旋转量。

让我们导出绕轴n旋转角度θ的矩阵。也就是说,我们想得到满足下面条件的矩阵

vR(n, θ)=v'

v'是向量v绕轴n旋转后的向量。让我们看看能否用v,n和θ表示v'。我们的想法是在垂直于n的平面中解决这个问题,那么这就转换为了一个简单的2D问题。为了做到这一点,将v分解为两个分量:v∥和v⊥,分别平行于n和垂直于n,并有v=v∥+v⊥。因为v∥平行于n,所以绕n旋转不会影响它。故只要计算出v⊥绕n旋转后的v⊥',就能得到v'=v∥+v⊥',我们构造向量v∥,v⊥和临时向量w,如图所示。

11111.png

上图展示了以下向量:

  • v∥是v平行于n的分量。另一种说法就是v∥是v在n上的投影,用(v●n)n计算。
  • v⊥是v垂直于n的分量。因为v=v∥+v⊥,所以v⊥=v-v∥。v⊥是v投影到垂直于n的平面上的结果。
  • w是同时垂直于v∥和v⊥的向量。它的长度和v⊥的相同。w和v⊥同在垂直于n的平面中。w是v⊥绕n旋转90度的结果,由n×v⊥可以得到。


现在,v'垂直于n的分量可以表示为:

2222.png

代换v⊥和w:

333.png

4444.png

5555.png

代入v'的表达式,有:

7777.png

现在,已经得到v'与v,n,θ的关系公式了,可以用它来计算变换后的基向量并构造矩阵。第一个基向量为:

99999.png

另外两个基向量的推导与之类似,有:

0000.png

1111.png

注意:上面我们只使用了列向量,这样做的目的是使等式整洁清晰、易于理解。

用这些基向量构造矩阵,可得公式为:

2222.png

标签: 计算机图形学

Powered by emlog  蜀ICP备18021003号   sitemap

川公网安备 51019002001593号