两条线段是否相交原理及C++实现

2023-11-04

step 1: 快速排斥 

如上图1,2所示:

AB的最大X坐标,如果小于PQ的最小X坐标,则不相交

CD和UV判断同理,换成Y坐标即可; 

 

 

step 2: 利用向量叉乘判断(亦称跨立方法)

 
 
2D 叉乘可把 2D 点看作 3D 的点( z 轴的值为 0 ),套进 3D 叉乘公式进行计算。
例如:有2个2D向量 a, b ,计算叉乘就是:
( a.y * b.z - b.y * 0 , 0 * b.x - b.z * a.x , a.x * b.y - b.x * a.y )= ( 0 , 0 , a.x * b.y - b.x * a.y )
 

如3,4,5所示,两个向量的计算结果符号分别对应相应的情况:

图3:P,Q分别在AB线段两侧;

图4:一点在线段上;

图5:一侧;

 

/********************

*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两条线段是否相交原理及C++实现 的相关文章

随机推荐

  • 软件设计师考试内容复习(二)

    一 层次化存储结构 二 Cache Cache的功能 提高CPU数据输入输出的速率 突破CPU与存储系统间数据传输带宽限制 在计算机存储系统体系中 Cache是访问速度最快的层次 使用Cache改善系统性能的依据是程序的局部性原理 如果以
  • docker 镜像容器导入导出、查看日志、拷贝文件命令

    1 本地文件拷贝到docker 容器中 参考 docker cp root pcl pcl 1 8 1 tar gz 7ff95b333e12 docker cp root lib64 a 7ff95b333e12 2 docker从容器里
  • 蓝桥杯决赛真题——国王的遗产

    标题 国王的遗产 X国是个小国 国王K有6个儿子 在临终前 K国王立下遗嘱 国王的一批牛作为遗产要分给他的6个儿子 其中 大儿子分1 4 二儿子1 5 三儿子1 6 直到小儿子分1 9 牛是活的 不能把一头牛切开分 最后还剩下11头牛 分给
  • 5种开源虚拟化技术推荐

    zz http www oschina net news 14907 5 opensource virtualization soft 论坛 http bbs chinaunix net forum 283 1 html 虚拟化现在已经成为
  • 力扣977-有序数组的平方

    有序数组的平方链接 给你一个按 非递减顺序 排序的整数数组 nums 返回 每个数字的平方 组成的新数组 要求也按 非递减顺序 排序 示例 1 输入 nums 4 1 0 3 10 输出 0 1 9 16 100 解释 平方后 数组变为 1
  • python开发工程师考试_Python开发工程师丨网易游戏

    本期导读 计科校友 榜样说 vol 15 方向很重要 实践出真知 蔡钰莹 Python开发工程师丨网易游戏 软件工程师 广州合明软件科技有限公司 前端开发工程师 广东中科慈航信息科技有限公司 网易游戏 公司简历 网易 NASDAQ NTES
  • SpringSecurity跨域问题,配置了相关配置还是报错

    跨域问题基础配置 跨域的本质是响应头问题 只要加上下述的响应头即可解决跨域 下述1 配置跨域中的代码是通过aop来实现该功能的一种方式 1 配置跨域 正常的跨域配置 Component public class CORSIntercepto
  • 【uni-app项目如何引入 uView组件库】

    uniapp项目引入uView组件库 一 uView官方文档 二 公司项目中引入并使用uView 一 uView官方文档 uView官方文档 二 公司项目中引入并使用uView 第一步 在公司创建完成uniapp项目后引入uView 第二步
  • ESP8266-NodeMCU——使用U8g2库点亮OLED

    前言 U8g2是嵌入式设备的单色图形库 U8g2库提供了大量绘制函数 简单引用即可实现想要的效果 并且适用大部分屏幕驱动 一 软件准备 1 Arduino IDE 2 u8g2库文件 点击跳转 如果在IDE里不能下载就从这下载 解压后放去库
  • C++中同类的不同对象可以相互访问成员(包括私有成员)

    如拷贝 复制 构造函数中 include using namespace std class Data public Data int a x a Data const Data r 调用别对象的函数 x r x void s cout l
  • 【c++】理解模板类型推导

    理解模板类型推导 函数模板 第一种情况 ParamType 是个非通用的引用或者是一个指针 第二种情况 ParamType 是个通用的引用 Universal Reference 第三种情况 ParamType 既不是指针也不是引用 数组参
  • 浅谈Hybrid技术的设计与实现第第2章

    前言 接上文 浅谈Hybrid技术的设计与实现 阅读本文前 建议阅读这个先 上文说了很多关于Hybrid的概要设计 可以算得上大而全 有说明有demo有代码 对于想接触Hybrid的朋友来说应该有一定帮助 但是对于进阶的朋友可能就不太满足了
  • Linux 终端颜色,界面着色

    环境 Ubuntu Liniux终端着色分2块 1 提示符及命令行和输出颜色 2 显示目录和文件 ls命令 颜色 一 提示符及命令行颜色设置 设置PS1命令 可立即生效 e后面为颜色设置部分 32 40m 32为前景色 40为背景色 m 不
  • pandas用均值填充nan_pandas dataframe 填充 NaN(填补缺失值)的方法 fillna 函数使用说明...

    在基于 pandas 的 DataFrame 对象进行数据处理时 如样本特征的缺省值处理 可以使用 DataFrame 对象的 fillna 函数进行填充 同样可以针对指定的列进行填补空值 单列的操作是调用 Series 对象的 filln
  • Unity-赛车Demo

    using UnityEngine using System Collections public class CarDrive MonoBehaviour public WheelCollider wheelColLF public Wh
  • 软件测试---弹出窗口

    视频地址 第五课时 https pan baidu com s 1gfLVC2n alert 弹出窗口 Alert Should Be Present Get Alert Message confirm 弹出窗口 Choose Cancel
  • [masmplus]初次使用报external symbol _start 是配置问题

    初次使用masmplus 其中在 codesg segment 使用了 start 标记 并在end处标明了 end start 但是默认的masmplus 会提示 start 为 不认识的 external symbol 如下图 那怎么办
  • 计算机系统的多级层次结构

  • Flutter的路由router-页面跳转

    文章目录 概念介绍 基本路由 Basic Routing 跳转到某个页面 弹出页面 命名路由 Named Routing 第三方路由管理库 Third Party Routing Libraries Android原生的路由 Intent
  • 两条线段是否相交原理及C++实现

    step 1 快速排斥 如上图1 2所示 AB的最大X坐标 如果小于PQ的最小X坐标 则不相交 CD和UV判断同理 换成 坐标即可 step 2 利用向量叉乘判断 亦称跨立方法 2D 叉乘可把 2D 点看作 3D 的点 z 轴的值为 0 套