Math 三维线平面相交?

Math 三维线平面相交?,math,geometry,line,plane,Math,Geometry,Line,Plane,我有两个向量(X,Y,Z),一个在Y=0上方,一个在Y=0下方。 我想找到两个原始向量之间的直线与Y=0级别相交的向量(X,Y,Z)。 我该怎么做 示例A点: X = -43.54235 Y = 95.2679138 Z = -98.2120361 示例B点: X = -43.54235 Y = 97.23531 Z = -96.24464 这些点是从用户单击的两个非投影中读取的,我正试图将非投影定位到Y=0 (我发现但不理解公认的答案,因为它是2D的)我怀疑,通过两个向量,您实际上是指两点

我有两个向量(X,Y,Z),一个在
Y=0
上方,一个在
Y=0
下方。 我想找到两个原始向量之间的直线与
Y=0
级别相交的向量(X,Y,Z)。 我该怎么做

示例A点:

X = -43.54235
Y = 95.2679138
Z = -98.2120361
示例B点:

X = -43.54235
Y = 97.23531
Z = -96.24464
这些点是从用户单击的两个非投影中读取的,我正试图将非投影定位到
Y=0


(我发现但不理解公认的答案,因为它是2D的)

我怀疑,通过两个向量,您实际上是指两点,并且希望将连接这两点的线与由
Y=0
定义的平面相交

如果是这种情况,则可以使用两点之间直线的定义:

其中,
是您的一点,
是另一点
u
是一个未定义的标量,用于计算沿此线的点

由于这条直线与平面相交,因此只需在直线上找到“Y”段为0的点即可


具体地说,在
B+(E-B)*u=0中求解
u
,然后将其反馈到原始直线方程中,以找到X和Z分量。

我怀疑,通过两个向量,您实际上是指两个点,并且希望将连接这两个点的直线与
Y=0
定义的平面相交

如果是这种情况,则可以使用两点之间直线的定义:

其中,
是您的一点,
是另一点
u
是一个未定义的标量,用于计算沿此线的点

由于这条直线与平面相交,因此只需在直线上找到“Y”段为0的点即可


具体来说,在
B+(E-B)*u=0中求解
u
,然后将其反馈到原始直线方程中,以找到X和Z分量。

直线方程为

(x–x1)/(x2–x1)  = (y–y1)/(y2–y1) = (z–z1)/(z2–z1)  
因此,使y=0产生交点的坐标

x = -y1 * (x2-x1)/(y2-y1) + x1 


这条线的方程式是

(x–x1)/(x2–x1)  = (y–y1)/(y2–y1) = (z–z1)/(z2–z1)  
因此,使y=0产生交点的坐标

x = -y1 * (x2-x1)/(y2-y1) + x1 


我不明白。当我还不认识你的时候,我该如何定义这条线?另外,如果我最终得到了这个标量,我将如何应用它呢?
u
是一个未知数;让我试着这样说:一条线可以被看作是一堆点,它们“排列”在一起。对吧?
u
是在您要查找的线路上查找任何特定点的方法。你试图找到位于
Y=0
平面上的一个点。一旦你有了
u
(这可以找到,因为你知道你想要
u
的值使你的
Y=0
子句为真),只需替换成
A+(D-A)*u
得到X,或者替换成
C+(F-C)*u
得到Z。我不知道如何从
-B/(E-B)得到
Y=0的标量
。目前看来,标量标度距离Y=0远,而不是更近。如果使用
u=-B/(E-B)
,并将其替换为原始的线上点方程
,那么从视觉角度看,你将得到在两个点之间相交于
Y=0
的直线上的点,你的
u
值是你的两个点之间的距离,
Y=0
的交点出现在。例如,如果
u=0
,则
位于
Y=0
。如果
u=1
,则
位于
Y=0
。如果
u=0.5
,则
Y=0
正好位于两点之间。如果
u=2.0
,则
Y=0
距离第二个点较近,但距离另一个点的长度等于两个点之间的距离,且在两个点之间的距离方向上。这个词的流行语是“插值”。我不明白。当我还不认识你的时候,我该如何定义这条线?另外,如果我最终得到了这个标量,我将如何应用它呢?
u
是一个未知数;让我试着这样说:一条线可以被看作是一堆点,它们“排列”在一起。对吧?
u
是在您要查找的线路上查找任何特定点的方法。你试图找到位于
Y=0
平面上的一个点。一旦你有了
u
(这可以找到,因为你知道你想要
u
的值使你的
Y=0
子句为真),只需替换成
A+(D-A)*u
得到X,或者替换成
C+(F-C)*u
得到Z。我不知道如何从
-B/(E-B)得到
Y=0的标量
。目前看来,标量标度距离Y=0远,而不是更近。如果使用
u=-B/(E-B)
,并将其替换为原始的线上点方程
,那么从视觉角度看,你将得到在两个点之间相交于
Y=0
的直线上的点,你的
u
值是你的两个点之间的距离,
Y=0
的交点出现在。例如,如果
u=0
,则
位于
Y=0
。如果
u=1
,则
位于
Y=0
。如果
u=0.5
,则
Y=0
正好位于两点之间。如果
u=2.0
,则
Y=0
距离第二个点较近,但距离另一个点的长度等于两个点之间的距离,且在两个点之间的距离方向上。这方面的流行语是“插值”。不应该
float z=-y1*(z2-z1)/(y2-y1)+z1?@user8709是的。谢谢已更正的不应
float z=-y1*(z2-z1)/(y2-y1)+z1?@user8709是的。谢谢纠正