【问题标题】:Algorithm to find a vector parallel to a plane and perpendicular to another vector找到平行于平面并垂直于另一个向量的向量的算法
【发布时间】:2017-06-18 15:38:51
【问题描述】:

我正在尝试推导一个公式来提取向量u

我得到了一些初始数据:

  1. 平面F用方法提取其法线n = F->normal()
  2. 矢量c 不在平面F 内,并通过某个点E 也不在平面F 内。

还有一些使用限制:

  1. 所需的矢量u 垂直于矢量c
  2. 矢量u 也垂直于某个未给出的矢量r。矢量r 平行于平面F,也垂直于矢量c。因此,我们可以说向量cru正交的

让我们将* 表示为点积,^ 运算符是两个 3d 向量之间的叉积。

向量u的计算很容易使用叉积:vec3 u = c^r。因此,我的整个任务被缩小到如何找到与给定平面F 平行并同时垂直于给定矢量c 的向量r。。 p>

因为我们知道rF平行,所以我们可以使用平面的法线和点积:n*r = 0。由于r 是未知的,因此可以有无数行满足上述方程。所以,我们也可以使用r垂直于c的条件:r*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 是否还需要其他任何东西?还是我的逻辑有缺陷?

【问题讨论】:

  • 使用您的符号:r = c ^ n
  • 由于 r 与 F 平行,因此它与 n 正交。因此,您正在寻找一个垂直于 n 和 c 的向量,该向量通过叉积 n ^ c 找到。

标签: algorithm math geometry


【解决方案1】:

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

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

你是对的,你的两个方程会有多个解。其他解由 r 的任何标量倍数给出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多