3D线 - 平面交叉?

时间:2010-12-07 23:04:13

标签: math geometry line plane

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

示例点A:

X = -43.54235
Y = 95.2679138
Z = -98.2120361

示例点B:

X = -43.54235
Y = 97.23531
Z = -96.24464

这些点来自用户点击的两个UnProjection,我正在尝试将取消投标定位到Y=0

(我发现3D line plane intersection, with simple plane但不理解接受的答案,因为它是2D)

2 个答案:

答案 0 :(得分:3)

我怀疑通过两个向量,你的意思是两个点,并希望将连接这两个点的线与Y=0定义的平面相交。

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

<A + (D - A)*u, B + (E - B)*u, C + (F - C)*u>

<A,B,C>是你的一个点,<D,E,F>是另一个点。 u是一个未定义的标量,用于计算沿该行的点。

由于您将此线与平面Y=0相交,因此您只需找到“Y”线段为0的线上的点。

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

答案 1 :(得分:2)

该行的等式是

(x–x1)/(x2–x1)  = (y–y1)/(y2–y1) = (z–z1)/(z2–z1)  

因此,使y = 0会产生交点的坐标。

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

z = -y1 * (z2-z1) /(y2-y1) + z1