与给定 Vector3 垂直的 Vector3

Mik*_*ink 3 unity-game-engine

我怎样才能找到Vector3垂直于给定的a Vector3?也许旋转Vector390 度或其他什么,是否有一个 vector3 函数可以做到这一点?

这张图说明了我想要实现的目标: 在此输入图像描述

小智 7

问题是,在 3D 空间中存在无限数量的垂直于任何给定向量的向量。您需要第二个向量不平行于第一个向量来找到垂直于它们的向量,即它们的叉积,因为这样定义了一个平面,该平面可能只有一条垂直线。

在Unity中,叉积是通过静态方法计算的Vector3.Cross()


小智 5

回答你原来的问题:如何计算垂直于另一个向量的向量?

\n\n

我们将你的向量p和我们正在寻找的垂直于它的向量称为q。请注意,向量的数量是无限的q,但我们只是要找到一个。

\n\n

对于垂直向量,点积始终为,因此我们找到可以写为 的0方程。现在我们要为和分配任意值,为了修复一个解决方案,让我们选择和。然后我们就剩下了。解决 给我们.p \xc2\xb7 q = 0p.x * q.x + p.y * q.y + p.z * q.z = 0q.xq.yq.x = 1q.y = 1p.x + p.y + p.z * q.z = 0q.zq.z = -(p.x + p.y) / p.z

\n\n

结论:向量q = (1, 1, -(p.x + p.y) / p.z)垂直于p

\n