关于空间线段求交点的问题。
准备采用解直线方程:x=x0+p1*t ;y=y0+q1*t;z=z0+r1*t的方式啦解,但是发现每次计算都需要判断方向向量是否为0,所以会有很多if分支,感觉很复杂,有没有什么简单一点的方法?
[解决办法]
两个线段方程分别为
x = x1 + p1 * t
y = y1 + q1 * t
z = z1 + r1 * t
t∈[a1,b1]
x = x2 + p2 * t
y = y2 + q2 * t
z = z2 + r2 * t
t∈[a2,b2]
先求解x1 + p1 * t = x2 + p2 * t中的t,这一步需要判断p1和p2是否相等,避免除数为0
如果无解,则返回false
如果有一个解,只能说明两个线段所在的直线可能有相交;
如果有无穷多个解,那么用y1 + q1 * t = y2 + q2 * t求解t;
如果还是无穷多个解,那么用z1 + r1 * t = z2 + r2 * t求解t;
接下来需要判断:
1> 求出的t是否同时满足∈[a1,b1]和∈[a2,b2]
2> 求出的t是否同时满足y1 + q1 * t = y2 + q2 * t, z1 + r1 * t = z2 + r2 * t
都满足,返回true,只要前面有一步不满足,返回false
[解决办法]