如何旋转3D平面?

时间:2017-11-03 03:57:52

标签: matlab math 3d rotation

我有一个三维平面(由多个点组成),它以奇怪的角度旋转。我想让它平坦,即躺在xy-plane上。我有平面方程,但我认为我的计算角度不正确或可能使用错误的旋转矩阵。错误的旋转矩阵是我的意思是我不确定我应该旋转哪个轴。附上是我飞机的照片:

this plane is rotated about  more then one axis

我尝试使用以下公式计算:

  1. THETA = -acosd((点(N1,N2))/(范数(N1)*范数(N2)));
  2. 计算球面角度:theta和phi;
  3. 两种方法都给出相同的角度,我首先围绕z轴旋转我的平面,然后围绕y轴旋转。由此产生的平面几乎是平坦的,但仍然有一些错误。

    我尝试了旋转矩阵和Rodrigues'旋转矩阵。如果有人可以建议如何旋转这个平面以使其平坦,那将会非常有用。

1 个答案:

答案 0 :(得分:1)

当平面不平行于xy平面时,它的法线向量将不与z轴平行。因此,法向量和z轴(单位)向量的叉积将是非零的。该向量位于平面中并与xy平面平行。将其作为旋转轴。使平面平行于xy平面的旋转角度与法向量和z轴之间的角度相同。