C++ 计算一个垂直于另一个给定向量的向量(所有向量均为3D)

C++ 计算一个垂直于另一个给定向量的向量(所有向量均为3D),c++,math,vector,computational-geometry,C++,Math,Vector,Computational Geometry,我有一个向量v1(假设v1=a1,b2,c1),这个v1通过点x1,y1,z1。现在我需要第二个向量,v2,它垂直于v1。假设v2通过第二个点x2,y2,z2 然而,我的最终目标是找到上述两条线的交点。你能帮我找到垂直于另一个给定向量的向量吗?请大家帮助我。在3D中,任何给定向量都有无数个垂直向量。对于任何向量方向,也就是说,并没有特定的方向,你们可以取你们的向量和任何其他向量的叉积。在3D中,任何给定向量都有无限多个垂直向量。对于任何向量方向,也就是说,并没有特定的方向,你们可以取你们的向量和

我有一个向量
v1
(假设
v1=a1,b2,c1
),这个
v1
通过点
x1,y1,z1
。现在我需要第二个向量,
v2
,它垂直于
v1
。假设
v2
通过第二个点
x2,y2,z2


然而,我的最终目标是找到上述两条线的交点。你能帮我找到垂直于另一个给定向量的向量吗?请大家帮助我。

在3D中,任何给定向量都有无数个垂直向量。对于任何向量方向,也就是说,并没有特定的方向,你们可以取你们的向量和任何其他向量的叉积。

在3D中,任何给定向量都有无限多个垂直向量。对于任何向量方向,也就是说,并没有特定的方向,你们可以取你们的向量和任何其他向量的叉积。

有无限多个向量和给定向量正交。另外,两条任意线可能不会在3D中相交。

与给定向量正交的向量数量是无限的。另外,两条任意直线在3D中可能不相交。

您的问题令人困惑,您想找到交点还是想要一个垂直向量

有无限多的向量垂直于给定的向量。如果您想要其中任何一个,请将
v1
向量旋转90度:
v2=(-y1,x1,z1)

至于线交叉,考虑到(如前所述)3D空间中的两条线几乎不会相互交叉。解决方案:


谷歌是你的朋友。

你的问题令人困惑,你想找到交点还是想要一个垂直向量

有无限多的向量垂直于给定的向量。如果您想要其中任何一个,请将
v1
向量旋转90度:
v2=(-y1,x1,z1)

至于线交叉,考虑到(如前所述)3D空间中的两条线几乎不会相互交叉。解决方案:



谷歌是你的朋友。

你应该在math.stackexchange.com上发布数学问题。对不起,我发现类似的问题也在这个论坛上发布。你说的向量“通过一个点”是什么意思?我想他指的是
(a1,b1,c1)=α(x1,y1,z1)
对于一些标量
α
,这并不重要…你应该在math.stackexchange.com上发布数学问题。对不起,我发现类似的问题也在这个论坛上发布。你说的向量“通过一个点”是什么意思?我想他指的是一些标量的
α
(a1,b1,c1)=α(x1,y1,z1)
,这并不重要…谢谢你的评论。但是,垂直向量应该通过一个特定的点。那么,我的向量仍然是由cross prodcut给出的向量吗?有无限多的向量通过特定的点,它们与特定的向量正交。想象向量v=(0,0,1)。位于XY平面上的任何向量都将与v正交,例如,可能有无限多个向量通过点(1,2,0)。@paul,我得到了。但是,最终这两个向量应该是相交的。只有当你能生成另一个与给定向量不平行的向量时,叉积方法才会起作用。谢谢你的评论。但是,垂直向量应该通过一个特定的点。那么,我的向量仍然是由cross prodcut给出的向量吗?有无限多的向量通过特定的点,它们与特定的向量正交。想象向量v=(0,0,1)。位于XY平面上的任何向量都将与v正交,例如,可能有无限多个向量通过点(1,2,0)。@paul,我得到了。但是,最终这两个向量应该是相交的。只有当你能生成另一个与给定向量不平行的向量时,叉积方法才会起作用。如果我需要找到一个向量,这个向量通过一个给定的点,那么我怎么能得到垂直向量?@g_niro找到任何垂直向量。现在移动它,使其通过给定点。再次注意,有无限多的可能性。是的,我现在明白了。但最后这两个向量(或直线)应该相交。那么,你的评论仍然有效吗?如果我需要以某种方式找到向量,即它通过给定的点,那么我如何才能得到垂直向量?@g_niro找到任何垂直向量。现在移动它,使其通过给定点。再次注意,有无限多的可能性。是的,我现在明白了。但最后这两个向量(或直线)应该相交。那么,你的评论仍然有效吗?我想知道交叉点。嗯。。。在我的答案中,请看我给出的链接,这里解释了你需要的一切(以及更多)。假设v1=(x1,y1,z1),那么v2=(-y1,x1,z1)不一定垂直于v1。假设v1=(0,0,1),则v2=v1,且两者不垂直。
如果x1==0,则v2=(1,0,0);elif y1==0,然后v2=(0,1,0);elif z1==0,然后v2=(0,0,1);否则v2=(-y1,x1,0)
(-y1,x1,z1)
通常与
(x1,y1,z1)
不垂直:
(-y1,x1,z1)*(x1,y1,z1)=-x1*y1+x1*y1+z1*z1=z1^2
我想得到交点。。。在我的答案中,请看我给出的链接,这里解释了你需要的一切(以及更多)。假设v1=(x1,y1,z1),那么v2=(-y1,x1,z1)不一定垂直于v1。假设v1=(0,0,1),则v2=v1,且两者不垂直。
如果x1==0,则v2=(1,0,0);elif y1==0,然后v2=(0,1,0);elif z1==0,然后v2=(0,0,1);否则v2=(-y1,x1,0)
(-y1,x1,z1)
不垂直