叉乘(三)——线段与线段相交吗?
用途3:
我们现在的任务就是判断线段P1P2和线段Q1Q2是否相交。
我们分两步确定两条线段是否相交:
(1)快速排斥试验
设以线段 P1P2 为对角线的矩形为R,
设以线段 Q1Q2 为对角线的矩形为T,
如果矩形R和矩形T不相交,显然两线段不会相交。
(2)跨立试验
如果两线段相交,则两线段必然相互跨立对方。
若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的两侧,
即1.(P1 - Q1) x (Q2 - Q1)<0, 这个式子表明Q1Q2在P1Q1的右方,也就是说P1Q1在Q1Q2的左方;
2. (Q2 - Q1) x (P2 - Q1)<0,这个式子表示P2Q1在Q1Q2的右方,
上面两个式子可写成( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) > 0。
当 ( P1 - Q1 ) × ( Q2 - Q1 ) = 0 时,说明 ( P1 - Q1 ) 和 ( Q2 - Q1 )共线,
但是因为已经通过快速排斥试验,所以 P1 一定在线段 Q1Q2上;
同理,( Q2 - Q1 ) ×(P2 - Q1 ) = 0 说明 P2 一定在线段 Q1Q2上。
所以判断P1P2跨立Q1Q2的依据是:
( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0。
同理判断Q1Q2跨立P1P2的依据是:
( Q1 - P1 ) × ( P2 - P1 ) * ( P2 - P1 ) × ( Q2 - P1 ) >= 0。
具体情况如下图所示:
转载于:https://www.cnblogs.com/o8le/archive/2011/10/28/2227181.html
叉乘(三)——线段与线段相交吗?相关推荐
- 两直线平行交叉相乘_计算几何算法5. 直线、线段和平面相交(2D和3D)
直线和线段相交 平面相交 直线-平面相交 两平面相交 三个平面相交 实现 intersect2D_2Segments() inSegment() intersect3D_SegmentPlane() ...
- 线段(向量)的计算(判断线段重叠、相交,合并线段,点与线的关系)
主要内容: 判断两线段是否相交 计算两线段的交叉点 点与直线的位置关系 判断两线段重合并计算其重合部分 判断合并两条线段 说明全都在注释里了,有的方法可能不是最佳,欢迎大家提出建议~~ public ...
- 判断线段和直线相交 POJ 3304
1 // 判断线段和直线相交 POJ 3304 2 // 思路: 3 // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. 4 5 #include ...
- 【运动控制】CNC三轴小线段路径规划
CNC三轴小线段路径规划 文章目录 CNC三轴小线段路径规划 一.项目说明 二.具体实现 1.速度规划 2.小线段插补 3.运动学逆解刀轴插补点 4.差分处理得到实际的速度和加速度 5.加速度滑动平均 ...
- 关于求线段和线段,线段和圆弧,圆弧与圆弧的交点算法
1.线段与线段求交点 已知线段的起点和终点,求交点,这个比较简单,解2个二元一次方程可以求出. a.我这里的算法是判断2条线段的定义域和值域是否有重合地方,有则进行下一步判断,没有这返回空,表示没有交 ...
- 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次
2016年小米校招笔试第一题(西安站) 1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次. 参考解法(Java版): package XiaoMi;/********** ...
- libgdx学习记录27——线段与线段相交检测
给定p1, p2, p3, p4四个点,p1,p2为一条线段,p3,p4为一条线段,检测其是否有交点. 可分为三种情况: 1. L2与x轴平行 2. L2与y轴平行 3. L2与坐标轴不平行. (L1 ...
- hdu 1086 A - You can Solve a Geometry Problem too (线段的规范相交非规范相交)
A - You can Solve a Geometry Problem too Time Limit:1000MS Memory Limit:32768KB 64bit IO For ...
- java判断线与矩形相交_判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)...
任意多边形与矩形的相交,其实就是判断多条线段是否与这个矩形相交,再简单点就是判断线段是否与矩形的每一条边相交了.那现在,我们先来看看判断一条线段与矩形的其中一条线段的相交的情况(上方水平线): (图形 ...
最新文章
- pycharm 使用小结
- python难学?对初学者不友好?进来看看,每30s就能学会一个小技巧,你get到了嘛?
- 轻量级NLP工具开源,中文处理更精准,超越斯坦福Stanza
- 单片机串口输入c语言,单片机通过串口与电脑连接通信C语言源代码
- 从C++转向最受欢迎的Rust语言
- C++ | 内联函数 inline
- Windows10系统Python2.7通过Swig调用C++过程
- 【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
- MSN再次出现大面积瘫痪 微软称尚未查明原因
- 研究CV、研究美,MMFashion开源库升级~
- 美国大学 计算机专业 排名,2019美国大学计算机专业排名
- 计算机无法启动怎么重装系统,电脑无法启动系统怎么重装
- webflux之reactor-Subscriber
- hostapd_cli 使用手册
- python是哪个国家的品牌,爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多...
- 【H5】两种加密解密方法:
- 音频录制(react)
- 不同厂商手机系统日志抓取方法
- Java泛型方法的定义
- 数据的存储,大端存储和小端小端存储
热门文章
- ASP将查询数据导出EXCEL
- 配置数据库引擎BDE(Borland DataBase Engine)
- ubuntu 内存占用解析
- 40张图彻底揭秘:输入网址究竟发生了什么?
- 阿里云面试官:如果是MySQL引起的CPU消耗过大,你会如何优化?
- 跟面试官聊到JVM,他99%会让你谈谈这个问题!
- SpringBoot+Spring Security验证密码MD5加密
- Python 命令pip install pygame安装报错
- Java 洛谷 P1464 Function
- property field java_Java 中 field 和 variable 区别及相关术语解释