我有一个vector1,我知道3D坐标(vector1可以在任何方向),我想找到两个垂直向量到这个vector1(两个垂直向量也必须彼此垂直)。
以编程方式找到两个向量的最快方法是什么(如果可能,用Java编写)?
我试图将vector1旋转90度,但它似乎总是不依赖于vector1的方向。
编辑: 垂直向量可以在任何方向上。
答案 0 :(得分:6)
要查找第一个向量,可以应用以下算法:
我们假设原始向量是(A, B, C)
。如果它们的标量乘积为0,则两个向量是垂直的。因此我们得到方程A * x + B * y + C * z = 0
。 A
,B
或C
中至少有一个不为零。我们假设C
不为零。然后向量(1
,1
,-(A + B) / C
)适合。可以以类似方式处理C = 0
但A != 0
或B != 0
的情况。
查找第二个向量要容易得多:您可以使用原始向量和第一个向量的向量积。那就是它。