方程组:
具有方向(a,b,c)和一个点X(x1,x2,x3)的线的参数方程是:
D1:(x, y, z) = (x1, y1, z1) + t1(a, b, c)
Run Code Online (Sandbox Code Playgroud)
具有2个点A和B的线的参数方程是:
D2:(x, y, z) = (xa, ya, za) + t2(xb-xa, yb-ya, zb-za)
Run Code Online (Sandbox Code Playgroud)
你只需要均衡D1和D2来得到结果,找到可行的参数t1和t2.(3个方程式,2个未知)
如果没有解决方案,则没有交叉点.
仅与段相交:
现在让M为你结果你只需要验证:
t2 in [0,1]
or 0<AM.AB<||AB||^2 (M is in the segment AB)
Run Code Online (Sandbox Code Playgroud)
备注:
如果你的线的表示来自笛卡尔方程(计划的交集),那么问题是相同的,但有4个方程,3个未知
例:
A (1,1,1)
B (0,0,0)
D2:(x,y,z)=(1-t2,1-t2,1-t2)
(a,b,c)=(1.-1.1)
(x1,y1,z1)=(1,0,1)
D1:(x,y,z)=(t1+1,-t1,1+t1)
Run Code Online (Sandbox Code Playgroud)
(D1和D2是侧面立方体的2个对角线= 1放在0,0,0上)
设M(x,y,z)为交点D1,D2
我们发现t1和t2均衡上述等式:D1和D2
我们很容易得到t1 = -1/2和t2 = 1/2
而且t2在[0,1]中,因此得到的交点在[A,B]中
M(1/2,1/2,1/2)= D1(t1)= D2(t2)是解