求三维空间两直线交点

emmm这个我今天百度了好久,发现都是同一篇,而且很长懒得看。。。于是我自己想了一个

设四个点构成两个线段p1(x1,y1,z1) p2(x2,y2,z2) p3(x3,y3,z3) p4(x4,y4,z4) ,向量a=p2-p1,b=p4-p3;
1.先判断两个线段是否平行
2.再计算d = cross(a,b); //就是同时与两直线垂直的向量
3.根据 p1和d 确定一个平面,计算p3到这个平面的距离,距离为0说明两直线共面
4.共面之后就可以求交点了,我们列出参数方程
pa=ta*p1+(1-ta)*p2;
pb=tb*p1+(1-tb)*p2;
pa=pb;
解方程得出t1或者t2,代入原参数方程就是交点
5. t1和t2如果都在0到1范围内,则两个线段相交

就酱
代码我还没写

你可能感兴趣的:(图形学,计算几何,三维空间,线段求交,求交点)