用途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

叉乘(三)——线段与线段相交吗?相关推荐

  1. 两直线平行交叉相乘_计算几何算法5. 直线、线段和平面相交(2D和3D)

    直线和线段相交 平面相交 直线-平面相交 两平面相交 三个平面相交 实现 intersect2D_2Segments() inSegment() intersect3D_SegmentPlane() ...

  2. 线段(向量)的计算(判断线段重叠、相交,合并线段,点与线的关系)

    主要内容: 判断两线段是否相交 计算两线段的交叉点 点与直线的位置关系 判断两线段重合并计算其重合部分 判断合并两条线段 说明全都在注释里了,有的方法可能不是最佳,欢迎大家提出建议~~ public ...

  3. 判断线段和直线相交 POJ 3304

    1 // 判断线段和直线相交 POJ 3304 2 // 思路: 3 // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. 4 5 #include ...

  4. 【运动控制】CNC三轴小线段路径规划

    CNC三轴小线段路径规划 文章目录 CNC三轴小线段路径规划 一.项目说明 二.具体实现 1.速度规划 2.小线段插补 3.运动学逆解刀轴插补点 4.差分处理得到实际的速度和加速度 5.加速度滑动平均 ...

  5. 关于求线段和线段,线段和圆弧,圆弧与圆弧的交点算法

    1.线段与线段求交点 已知线段的起点和终点,求交点,这个比较简单,解2个二元一次方程可以求出. a.我这里的算法是判断2条线段的定义域和值域是否有重合地方,有则进行下一步判断,没有这返回空,表示没有交 ...

  6. 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次

    2016年小米校招笔试第一题(西安站) 1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次. 参考解法(Java版): package XiaoMi;/********** ...

  7. libgdx学习记录27——线段与线段相交检测

    给定p1, p2, p3, p4四个点,p1,p2为一条线段,p3,p4为一条线段,检测其是否有交点. 可分为三种情况: 1. L2与x轴平行 2. L2与y轴平行 3. L2与坐标轴不平行. (L1 ...

  8. 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 ...

  9. java判断线与矩形相交_判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)...

    任意多边形与矩形的相交,其实就是判断多条线段是否与这个矩形相交,再简单点就是判断线段是否与矩形的每一条边相交了.那现在,我们先来看看判断一条线段与矩形的其中一条线段的相交的情况(上方水平线): (图形 ...

最新文章

  1. pycharm 使用小结
  2. python难学?对初学者不友好?进来看看,每30s就能学会一个小技巧,你get到了嘛?
  3. 轻量级NLP工具开源,中文处理更精准,超越斯坦福Stanza
  4. 单片机串口输入c语言,单片机通过串口与电脑连接通信C语言源代码
  5. 从C++转向最受欢迎的Rust语言
  6. C++ | 内联函数 inline
  7. Windows10系统Python2.7通过Swig调用C++过程
  8. 【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
  9. MSN再次出现大面积瘫痪 微软称尚未查明原因
  10. 研究CV、研究美,MMFashion开源库升级~
  11. 美国大学 计算机专业 排名,2019美国大学计算机专业排名
  12. 计算机无法启动怎么重装系统,电脑无法启动系统怎么重装
  13. webflux之reactor-Subscriber
  14. hostapd_cli 使用手册
  15. python是哪个国家的品牌,爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多...
  16. 【H5】两种加密解密方法:
  17. 音频录制(react)
  18. 不同厂商手机系统日志抓取方法
  19. Java泛型方法的定义
  20. 数据的存储,大端存储和小端小端存储

热门文章

  1. ASP将查询数据导出EXCEL
  2. 配置数据库引擎BDE(Borland DataBase Engine)
  3. ubuntu 内存占用解析
  4. 40张图彻底揭秘:输入网址究竟发生了什么?
  5. 阿里云面试官:如果是MySQL引起的CPU消耗过大,你会如何优化?
  6. 跟面试官聊到JVM,他99%会让你谈谈这个问题!
  7. SpringBoot+Spring Security验证密码MD5加密
  8. Python 命令pip install pygame安装报错
  9. Java 洛谷 P1464 Function
  10. property field java_Java 中 field 和 variable 区别及相关术语解释