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

 金瑞期货秦臻 发布于 2022-11-03 18:15

语言:java
目前我想测试2两条线是否相交(在我的情况下,相连接不视为相交),代码如下

         Point point1 = new Point(10,10);
         Point point2 = new Point(20,20);
         Line2D line1 = new Line2D.Double();
         line1.setLine(point1,point2);

         Point point3 = new Point(20,20);
         Point point4 = new Point(30,30);
         Line2D line2 = new Line2D.Double();
         line2.setLine(point3,point4);

         System.out.println("This is "+line1.intersectsLine(line2));
         出来的是true(我想要的是false,因为他们相连接的,在我的这个情况下不算相交)

这个intersectsline 把相连也当做的相交,我想请问请问一下有没有其他办法测试他们是否相交(但是相连接得情况不算)

为了让大家更好的理解我的问题,我把我的问题具体说一下:
目前我在做一个机器人自动导航找最短路线的程序,我现在想画visibility graph(中文名我不确定,我“有道”查了一下叫:可视图法,不知道对不对) 我想测试一条线是否与一个多边形相交。我把多边形变成了一条一条的边,然后测试是否相交。所以就有了以上的问题。

如果上面的问题不能解决,有大神能告诉我怎么测试一条线与多边形是否相交的话(相连接不视为相交),也感激不敬!

谢谢大家的帮助!

3 个回答
  • 希望这两篇博客可以帮到你。
    http://blog.csdn.net/shao9411...
    http://blog.csdn.net/shao9411...

    2022-11-12 01:41 回答
  • 我觉得可以在你的方法上简单修改一下,上来先判断是否相连。很简单地判一下,point1point3point1point4point2point3point2point4是否重叠就可以了。
    至于测试相交的办法,我觉得你用的API应该挺好的吧~

    然后查了一下Line2D的源码,其实有这个方法可以用:public static boolean linesIntersect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) 也许可以省几行代码:)

    2022-11-12 01:41 回答
  • (x2-x1)/(y2-y1)算斜率,如果斜率一样并且intersectsLine返回true就是相连。

    2022-11-12 01:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有