找到平行于平面并垂直于另一个向量的向量的算法

时间:2017-02-01 18:52:41

标签: algorithm math geometry

我试图推导出一个公式来提取向量u

vector-plane-vector setup image

我给出了一些初步数据:

  1. 使用提取其正常F
  2. 的方法展开n = F->normal()
  3. 向量c不在平面F内并通过某些点E,它也不在F平面内。
  4. 有些限制使用:

    1. 所需的向量u垂直于向量c
    2. 向量u也垂直于某个向量r,但未给出。向量r与平面F平行,也垂直于向量c。因此,我们可以说向量cru正交
    3. 我们将*表示为点积,^运算符是两个3d向量之间的交叉乘积。

      使用叉积u可以轻松计算向量vec3 u = c^r。所以,我的整个任务范围缩小到如何找到与给定平面r平行且同时垂直于给定向量F <的向量c /强>

      因为我们知道rF平行,所以我们可以使用平面的正常和点积:n*r = 0。由于r未知,因此无数行可满足上述等式。因此,我们也可以使用rcr*c = 0垂直的条件。

      总结,有两个点积方程可以帮助我们找到向量r

      r*c = 0;
      r*n = 0;
      

      然而,我很难以算法的方式弄清楚如何以两种方程式获得矢量r坐标。假设r = (x, y, z)我们希望找到xyz;似乎只有两个方程似乎不可能:

      x*c.x + y*c.y + z*c.z = 0;
      x*n.x + y*n.y + z*n.z = 0;
      

      我觉得我错过了一些东西,例如,我需要第三个约束。还有其他需要提取xyz的内容吗?或者我的逻辑有缺陷吗?

1 个答案:

答案 0 :(得分:2)

您可以通过计算n和c的叉积来找到向量r。

这将自动满足r.c = r.n = 0

你是对的,你的两个方程将有多个解决方案。其他解决方案由r。

的任何标量倍数给出