Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个向量中找出两个垂直向量_Java_Vector - Fatal编程技术网

Java 从另一个向量中找出两个垂直向量

Java 从另一个向量中找出两个垂直向量,java,vector,Java,Vector,我有一个向量1,我知道3D坐标(向量1可以在任何方向),我想找到两个垂直于向量1的向量(两个垂直向量也必须相互垂直) 以编程方式(如果可能的话,用Java)查找这两个向量的最快方法是什么 我尝试将矢量1旋转90度,但它似乎并不总是根据矢量1的方向工作 编辑: 垂直向量可以是任何方向。要找到第一个向量,可以应用以下算法: 让我们假设原始向量是(A,B,C)。如果两个向量的标量积为0,则它们是垂直的。所以我们得到一个方程A*x+B*y+C*z=0。A、B或C中至少有一个不是零。让我们假设C不是零。然

我有一个向量1,我知道3D坐标(向量1可以在任何方向),我想找到两个垂直于向量1的向量(两个垂直向量也必须相互垂直)

以编程方式(如果可能的话,用Java)查找这两个向量的最快方法是什么

我尝试将矢量1旋转90度,但它似乎并不总是根据矢量1的方向工作

编辑:
垂直向量可以是任何方向。

要找到第一个向量,可以应用以下算法:
让我们假设原始向量是
(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


找到第二个向量要容易得多:可以使用原始向量和第一个向量的向量积。就是这样。

空间是三维的吗?这个问题需要更多的细节。任何两个向量都可以吗?(当然,只要它们相互垂直于矢量1)如何旋转矢量1?