Fortran Coder

查看: 6939|回复: 3
打印 上一主题 下一主题

[通用算法] 三维空间求任意线段交点问题

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
54 元
贡献
25 点
跳转到指定楼层
楼主
发表于 2021-8-6 11:04:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
三维空间内,有两条线段,通过叉乘可知道是否平行或共线。若不共线,怎么求出两条线段是否相交,如果相交,怎么求出交点。
常规算法如下;
但问题是 如果两条线段都在z=0的平面上,方程中分母会出现为0的情况
求大佬解答!!!
设第一条线段起点(x1,y1,y2)终点(x2,y2,z2);设第二条线段起点(x3,y3,y3)终点(x4,y4,z4),若有交点为(x,y,z)//     t1 = 0,t2 = 0;//    t2 = ( (z3-z1)/(z2-z1) - (x3-x1)/(x2-x1) ) / ( (x4-x3)/(x2-x1) - (z4-z3)/(z2-z1) );//    t1 = ( z3-z1 + (z4-z3)*t2) / (z2-z1);//    if (t1 <= 1 && t2 <= 1) {//       x=(x1+(x2-x1)*t1);//       y=(y1+(y2-y1)*t1);//       z=(z1+(z2-z1)*t1);    //    }//    else
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

834

帖子

2

主题

0

精华

大宗师

F 币
3922 元
贡献
2332 点
沙发
发表于 2021-8-8 22:18:41 | 只看该作者
你这个问题,既然用了参数t来表示线段,那就是求两个t是否有解且在[0,1]范围的问题。这是一个 3×2 的矩阵的线性代数问题。

QQ截图20210808221527.png (148.09 KB, 下载次数: 217)

QQ截图20210808221527.png

5

帖子

2

主题

0

精华

入门

F 币
54 元
贡献
25 点
板凳
 楼主| 发表于 2021-8-9 10:03:49 | 只看该作者
li913 发表于 2021-8-8 22:18
你这个问题,既然用了参数t来表示线段,那就是求两个t是否有解且在[0,1]范围的问题。这是一个 3×2 的矩阵 ...

忘了有秩这个东西了,感谢提醒

834

帖子

2

主题

0

精华

大宗师

F 币
3922 元
贡献
2332 点
地板
发表于 2021-8-13 13:45:09 | 只看该作者
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-1 07:14

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表