清华计算几何-线段求交与BO算法

news2024/11/23 10:56:23

单轴线段求交

给定单边轴下,  N定线段,检查出相交的线段.

解法一: 暴力求解

遍历所有线段对,进行相交判断, 算法复杂度为O(n2)

解法二: LR扫描

把每条线段的头尾认定为L和R。对所有点进行排序,如果每两个点满足LL或者RR,则对应的线段相交。如果为LR,则对应的线段无相交,算法复杂度为O(nlog(n))

多轴线段求交 - BO算法(line sweep)

上面强调是单个坐标轴的线段求交,扩展到XY轴甚至更多轴.

比较常用的算法有 bentley–ottmann algorithm, 简称BO算法。

利用扫描线进行求交的算法.

算法复杂度: O((n + I) * logn)

空间: O(n + I)

N为线段总数, I为线段交点.

扫描线相交线的垂直排序(从上到下)

扫描线为垂直线, 自左向右扫描,  在x = t时刻, 扫描线与多条线段相交, 按照相交点的高度从上往下排序, 在最上面交点所在的线段顺序最高,然后依次往下降低。

事件点和扫描线移动导致垂直排序变化(从左到右)

随着扫描线的移动,假设原来线段A的顺序高于线段B,但是经过某些关键点变化,他们的相对顺序会颠倒。这些点成为事件(Event)

扫描线移动的时候导致垂直排序发生改变的三个关键时间点:

[1]线段左端点

[2]两条线段相交点

[3]线段右端点

BO算法使用的数据结构

前面说到BO算法由扫描线从左向右扫描, 扫描线时刻会和某部分线段产生相交事件(左右端点 + 相交事件), 而多条线段之间又存在高度之间的顺序排列以及顺序变化。

EventQueue

从左到右经过线段的左右端点和相交点都为事件点。

优先队列

Status Struct

和扫描线X = t正在相交的线段,进行上下维度的高度排序

平衡二叉树

扫描线从左到右扫描线段的三种情况

扫描线进行扫描的EventQueue案例

扫描线相交线段上下维度的StatusStruct变化的案例

(线段左端点,右端点,和相交事件)三种事件下StatusStruct都会产生变化,BBST(平衡二叉树)实现其中的删减和重新排序

BO算法中判断线段相交是前面线段三类事件决定的结果--案例

其中f和e相交就是线段P右端点引发的事件后果.(三类事件中的第二类事件)

BO算法特殊情况下效率低下--重复测试

参考资料

[1]清华计算几何 P66 - P82

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode JAVA刷刷站(97)交错字符串

一、题目概述 二、思路方向 为了验证字符串 s3 是否由 s1 和 s2 交错组成,我们可以使用动态规划(Dynamic Programming, DP)的方法来解决这个问题。 首先,我们需要定义状态 dp[i][j],它表示 s1 的前 i 个字符和 s2 的前…

DocuSign集成方案 | 结合 DocuSign 与 Oracle,加快业务完成速度!

DocuSign for Oracle 集成将 DocuSign 的电子签名功能与 Oracle 的项目生命周期管理 (PLM) 解决方案相结合 DocuSign 和 Oracle 是两家全球领先的技术公司,它们都致力于帮助企业简化和自动化流程。DocuSign 是电子签名领域的领导者,其解决方案可帮助企业…

【操作系统】实验:进度调度(2)

目录 一、实验目的 二、实验要求 三、实验步骤 四、核心代码 五、记录与处理 六、思考 七、完整报告和成果文件提取链接 一、实验目的 1、掌握高优先权调度算法 2、理解时间片、优先权、抢占等基本概念。 二、实验要求 1. 优先权属于静态优先权; 2. 进入 …

DevOps实现CI/CD实战(五)- Jenkins流水线Pipeline-更新中..

九、 Jenkins流水线pipeline Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的间,并且问题不方便定位问题。Jenkins的…

工程数学与数学建模在编程与算法设计中的应用(下)

目录 引言 第三部分:工程数学在算法设计与优化中的应用 3.1 微分方程与动力系统模拟 常微分方程(ODE)在动态系统中的应用 偏微分方程(PDE)在图像处理与物理模拟中的应用 总结 3.2 概率论与数理统计在机器学习中的…

若依将登录用户的userId自动加载到查询中

点击搜索,会将登录用户的userId作为搜索条件,去查询。 新版本自动存储了userId,我们不用改,只要知道如何引用。 前端使用 在对应的vue文件,查询queryParams 加查询的值 然后参考他的 添加store import store from &…

i.MX6裸机开发(11)——DDR测试

本章参考资料:《IMX6ULRM》(参考手册)。 学习本章时,配合《IMX6ULRM》Chapter 33: Multi Mode DDR Controller (MMDC) 一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 特别说明,本书内容是以i.MX6U系列控制器资…

Serdes系统中的CTLE技术

典型的SerDes系统包含输入数据、串行器、发射机(TX)、信道、接收机(RX)、解串器和输出数据。串行数据比特流被输入到发送器。发射机由均衡器(EQ)和包括封装效果的线性模拟后端组成。传输后端和接收器前端之…

JAVA语言开发环境配置详细讲解

​ ​ 您好,我是程序员小羊! 前言 Java是一门广泛应用于软件开发领域的编程语言,自1995年由Sun Microsystems首次发布以来,经过多年的发展,已经成为业界的重要编程语言之一。Java以其“编写一次,到处运行”…

【计算机网络】电路交换、报文交换、分组交换

电路交换(Circuit Switching):通过物理线路的连接,动态地分配传输线路资源 ​​​​

IDEA/Pycharm/Goland/jetbrains2024.2全家桶汉化失败问题解决

近期,jetbrains全家桶更新到了2024.2版本,不少人反馈到,下载安装之后,按照以前的汉化方式进行汉化的之后,并没有生效。本章教程,提供此问题的解决方案,亲测有效。 JetBrains 是一家总部位于捷克布拉格的软件开发公司,成立于 2000年。该公司以开发高效、智能的开发工具和…

基于SparkGraphX实现标签传播(LPA)算法

基于SparkGraphX实现标签传播(LPA)算法 标签传播算法(LPA)与Louvain一样,同样是一种常用的社群发现算法,它的基本思想是让图中的节点根据邻居节点的标签(即社区信息)来更新自己的标…

第J1周:ResNet-50算法实战与解析(TensorFlow版)

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 本周任务: 1.请根据本文TensorFlow代码,编写出相应的pytorch代码 2.了解残差结构 3.是否可以将残差模块融…

Mybatis的搭建以及使用

一&#xff0c;如何搭建Mybatis 1&#xff0c;创建一张表和表对应的实体类 2.导入 MyBatis jar 包,mysql 数据库驱动包 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> …

ICML 2024 顶级论文:机器学习有什么新进展?

在本周的文章中&#xff0c;我打算探讨在国际机器学习大会 ICML 上发表的论文&#xff0c;该大会目前于 2024 年 7 月 21 日至 27 日在奥地利首都维也纳举行。与其他顶级人工智能会议一样&#xff0c;每年都会有数千篇论文提交&#xff0c;但录取率相对较低&#xff08;过去三年…

JavaScript高阶 day-02

目录 一.构造函数 1.1 JS构造函数的实例成员和静态成员 1.1.1实例成员 1.1.2静态成员 1.2构造函数原型prototype 1.3对象原型 1.4 constructor构造函数 1.5原型链 1.6构造函数实例和原型对象三角关系 1.7原型链和成员的查找机制 1.7.1 Object.prototype.hasOwnPrope…

正高职称评审中专利与论文的权重比较

正高职称评审中&#xff0c;专利和论文的权重因地区、行业、单位以及具体评审政策的不同而有所差异。 一般来说&#xff0c;专利分不同类型&#xff0c;包括发明专利、实用新型专利和外观设计专利。发明专利申请授权过程中要进行实质审查&#xff0c;含金量最高&#xff0c;在…

通过ClearScript V8在.NET中执行复杂JavaScript逻辑

介绍 在现代网络开发中&#xff0c;爬虫技术已成为数据采集和分析的核心手段之一。通常&#xff0c;爬虫程序需要处理复杂的JavaScript逻辑&#xff0c;尤其是在面对动态加载的网页时。这时&#xff0c;传统的HTTP请求和HTML解析已经无法满足需求。为了应对这些挑战&#xff0…

高清无水印,2024年最佳免费录屏工具集合

如果你喜欢记录游戏的精彩瞬间&#xff0c;那班迪录屏你一定不陌生吧&#xff0c;它是一款主攻游戏录制的工具&#xff0c;这次我们一起来探索下除了它之外还有什么工具能实现我们电脑录屏操作呢。 1.福昕REC大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 这个软件我推荐…

深度学习——分布式训练

目录 1. 前言2.分布式训练的分类3.不并行&#xff08;单机单卡&#xff09;4. 数据并行 DP和DDP4.1 异同点4.2 原理4.3 DP 实现&#xff08;单机多卡&#xff09;4.4 DDP 实现&#xff08;单机多卡&#xff0c;多机分布式&#xff09;4.4.1DDP 基本概念4.4.2 DDP之单机多卡4.4.…