读书人

关于空间线段求交点的有关问题

发布时间: 2012-09-28 00:03:35 作者: rapoo

关于空间线段求交点的问题。
准备采用解直线方程: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
[解决办法]

探讨

这个必须有矩阵解法的
相交必定同平面
两线同平面有解析方程的
另考虑两线平行的情况即可
同平面只有两种情况:相交与平行

再说了 即使用你说的解
也就3阶线性方程而已
即使高斯消去法 求解都很快很简单
学过高等代数的
怎么还会想到两两联立求解线性方程呢?

读书人网 >软件架构设计

热点推荐