java判断两线段是否相交
首先推荐java的Line2D类自带方法linesIntersect
java.awt.geom.Line2D.linesIntersect(x1, y1, x2, y2, x3, y3, x4, y4);
然后从网上找到一种比较好理解的方法
/**两【线段】是否相交* @param l1x1 线段1的x1* @param l1y1 线段1的y1* @param l1x2 线段1的x2* @param l1y2 线段1的y2* @param l2x1 线段2的x1* @param l2y1 线段2的y1* @param l2x2 线段2的x2* @param l2y2 线段2的y2* @return 是否相交*/public static boolean intersection(double l1x1, double l1y1, double l1x2, double l1y2,
double l2x1, double l2y1, double l2x2, double l2y2){// 快速排斥实验 首先判断两条线段在 x 以及 y 坐标的投影是否有重合。 有一个为真,则代表两线段必不可交。if (Math.max(l1x1,l1x2) < Math.min(l2x1 ,l2x2)|| Math.max(l1y1,l1y2) < Math.min(l2y1,l2y2)|| Math.max(l2x1,l2x2) < Math.min(l1x1,l1x2)|| Math.max(l2y1,l2y2) < Math.min(l1y1,l1y2)){return false;}// 跨立实验 如果相交则矢量叉积异号或为零,大于零则不相交if ((((l1x1 - l2x1) * (l2y2 - l2y1) - (l1y1 - l2y1) * (l2x2 - l2x1)) * ((l1x2 - l2x1) * (l2y2 - l2y1) - (l1y2 - l2y1) * (l2x2 - l2x1))) > 0|| (((l2x1 - l1x1) * (l1y2 - l1y1) - (l2y1 - l1y1) * (l1x2 - l1x1)) * ((l2x2 - l1x1) * (l1y2 - l1y1) - (l2y2 - l1y1) * (l1x2 - l1x1))) > 0){return false;}return true;}
参考:https://blog.csdn.net/qq826309057/article/details/70942061
java判断两线段是否相交相关推荐
- python判断两线段是否相交_c语言 判断两直线段是否相交
转了多人的放到一起比较!! //功能:求点在有向直线左边还是右边 //返回:0共线.1左边.-1右边 intleft_right(pointa,pointb,doublex,doubley) { do ...
- [GIS算法] 判断两线段是否相交的四种方案(快速排斥+跨立实验、参数方程求解、凸多边形、点在线的哪一侧)-附C语言实现
文章目录 算法一:快速排斥+跨立试验 代码 算法二:参数方程求解 代码 算法三:凸多边形 算法四:点在线的哪一侧 算法一:快速排斥+跨立试验 重点掌握 [原理]利用矢量的叉乘 [图解] 代码 #def ...
- hdu 1086(判断两线段是否相交)
题意:给出一些线段,问有多少个交点. 解题思路:这里实际就是一个线段相交的模型,下面这个图给出了思路. 如果两线段相交,则两线段必然相互跨立对方.若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ...
- 判断两线段是否相交——快速排斥与跨立实验
如何判断两条线段是否相交呢?如果是我们去解决这个问题,用眼睛很容易就看出来了,但是如果用计算机来解决这个问题,该怎么办呢?下面介绍两个方法,这两个方法结合起来就能完美解决这个问题了. 一.快速排斥 对 ...
- 判断两线段是否相交,并求交点
首先, 上个示意图. 根据图示, 线段a表示为端点a1和a2, 线段b表示为端点b1和b2. 为了利用向量的叉乘关系, 将线段的端点看成四个向量, 下面用粗体表示向量. 根据向量运算可知 a=a2-a ...
- nyoj1016德莱联盟【判断两线段是否相交】
德莱联盟 时间限制:1000ms | 内存限制:65535KB 难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道 ...
- 判断三维空间两线段是否相交(附代码)
文章目录 一.推导过程 二.MATLAB代码 博文: 计算几何--判断两线段是否相交,提供了判断两线段是否相交的方法以及代码.然而,只是考虑了平面的情况.本博文提供一种简单有效的方法判断三维空间两 ...
- python 求两线段是否相交,如果相交求交点
代码如下,cal_point = False 不输出交点,cal_point = True 输出交点 def cross(p1,p2,p3):#跨立实验 x1=p2.x-p1.x y1 ...
- 快速排斥实验amp;跨立实验 判断两直线是否相交
两条线段有且仅有一个公共点,且这个点不是任何一条线段的端点时,称这两条线段是严格相交的. 也就是说线段不严格相交时可以将端点作为交点,但本文不讨论不严格相交,只讨论严格相交的情况(即使它们在算法实现上 ...
最新文章
- 进程状态控制-进程的挂起和激活
- python练习2 购物车程序
- python图画制作_用Python把照片制作成素描图片
- sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?
- 适用于Java开发人员的Elasticsearch:简介
- [BZOJ 1588] [HNOI 2002] 营业额统计
- ecs 云服务器 管理控制台_【弹性计算】教您快速学会云服务器ECS 创建命令!
- Restful 表述性状态传递
- 跳过17:30,跳过瑞星定时扫描
- 【Longest Palindromic Substring】cpp
- IDEA 卡成球了 !咋优化 ?
- Node.js开发指南中的例子(mysql版)
- 创建属于自己的OneNote插件
- 华为网关服务器型号,02311CWM CN21ITGC SP212 I350-T4 华为服务器四口千兆网卡
- C# 将方形图片剪切为圆形(winForm)
- Doctype 作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?
- MIUI打开相册怎么默认显示全部照片_小米手机让相册默认展示所有图片怎么设置?
- Python递归学习6 涂格子问题
- 使用Pandas的read_html方法读取网页Table表格数据
- 还不了解什么是商业智能(BI)?看完这篇文章就懂了
热门文章
- 有道精品课数据中台建设实践
- 【报告分享】美好城市指数:短视频与城市繁荣关系白皮书.pdf(附下载链接)...
- 【报告分享】2019中国青年理想城报告(含城市青和力TOP100).pdf
- 牛客网编程题——字符串_确定两串乱序同构
- word2vec中的数学模型
- java win 窗体开发简单订餐系统_Java实现简单订餐系统
- linux 时间怎么求差值_linux 时间戳及时间差计算
- ROS入门-16.tf坐标系广播与监听的编程实现
- 吴恩达|机器学习作业2.1正则化的Logistic回归
- GitHub Pages自定义域名如何支持https