我试图推导出一个公式来提取向量u
。
我给出了一些初步数据:
F
。n = F->normal()
c
不在平面F
内并通过某些点E
,它也不在F
平面内。有些限制使用:
u
垂直于向量c
。 u
也垂直于某个向量r
,但未给出。向量r
与平面F
平行,也垂直于向量c
。因此,我们可以说向量c
,r
和u
是正交。我们将*
表示为点积,^
运算符是两个3d向量之间的交叉乘积。
使用叉积u
可以轻松计算向量vec3 u = c^r
。所以,我的整个任务范围缩小到如何找到与给定平面r
平行且同时垂直于给定向量F
<的向量c
/强>
因为我们知道r
与F
平行,所以我们可以使用平面的正常和点积:n*r = 0
。由于r
未知,因此无数行可满足上述等式。因此,我们也可以使用r
与c
:r*c = 0
垂直的条件。
总结,有两个点积方程可以帮助我们找到向量r
:
r*c = 0;
r*n = 0;
然而,我很难以算法的方式弄清楚如何以两种方程式获得矢量r
坐标。假设r = (x, y, z)
我们希望找到x
,y
和z
;似乎只有两个方程似乎不可能:
x*c.x + y*c.y + z*c.z = 0;
x*n.x + y*n.y + z*n.z = 0;
我觉得我错过了一些东西,例如,我需要第三个约束。还有其他需要提取x
,y
和z
的内容吗?或者我的逻辑有缺陷吗?
答案 0 :(得分:2)
您可以通过计算n和c的叉积来找到向量r。
这将自动满足r.c = r.n = 0
你是对的,你的两个方程将有多个解决方案。其他解决方案由r。
的任何标量倍数给出