Math 三维线平面相交?
我有两个向量(X,Y,Z),一个在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的)我怀疑,通过两个向量,您实际上是指两点
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是的。谢谢纠正