为了账号安全,请及时绑定邮箱和手机立即绑定

java测试线与线之间是否相交(相连接不视为相交)

java测试线与线之间是否相交(相连接不视为相交)

临摹微笑 2019-03-30 11:36:52
语言:java目前我想测试2两条线是否相交(在我的情况下,相连接不视为相交),代码如下Pointpoint1=newPoint(10,10);Pointpoint2=newPoint(20,20);Line2Dline1=newLine2D.Double();line1.setLine(point1,point2);Pointpoint3=newPoint(20,20);Pointpoint4=newPoint(30,30);Line2Dline2=newLine2D.Double();line2.setLine(point3,point4);System.out.println("Thisis"+line1.intersectsLine(line2));出来的是true(我想要的是false,因为他们相连接的,在我的这个情况下不算相交)这个intersectsline把相连也当做的相交,我想请问请问一下有没有其他办法测试他们是否相交(但是相连接得情况不算)为了让大家更好的理解我的问题,我把我的问题具体说一下:目前我在做一个机器人自动导航找最短路线的程序,我现在想画visibilitygraph(中文名我不确定,我“有道”查了一下叫:可视图法,不知道对不对)我想测试一条线是否与一个多边形相交。我把多边形变成了一条一条的边,然后测试是否相交。所以就有了以上的问题。如果上面的问题不能解决,有大神能告诉我怎么测试一条线与多边形是否相交的话(相连接不视为相交),也感激不敬!谢谢大家的帮助!
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

用(x2-x1)/(y2-y1)算斜率,如果斜率一样并且intersectsLine返回true就是相连。
                            
查看完整回答
反对 回复 2019-03-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

我觉得可以在你的方法上简单修改一下,上来先判断是否相连。很简单地判一下,point1和point3、point1和point4、point2和point3、point2和point4是否重叠就可以了。
至于测试相交的办法,我觉得你用的API应该挺好的吧~
然后查了一下Line2D的源码,其实有这个方法可以用:publicstaticbooleanlinesIntersect(doublex1,doubley1,doublex2,doubley2,doublex3,doubley3,doublex4,doubley4)也许可以省几行代码:)
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 719 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信