扫线法快速判断凹多边形相交

本文介绍了扫线法在判断凹多边形相交中的高效解决方案,详细阐述了扫线法的概念、目标问题、基本结构定义、事件定义与扫描规则,以及顶点与凹多边形、凹多边形之间相交的判定规则。通过扫线法将二维空间降维处理,实现接近O(n)的复杂度计算。
摘要由CSDN通过智能技术生成

简介:

首先给出我的Github页面:ConcaveIntersection
这个开源库基于Unity开发,主要实现了凹多边形之间的相交判断,当然也可以应用于顶点与凹凸包、线段与凹凸包、凸包与凸包之间的相交判断,也就是说,这个方案基本可以解决前面两则文章中的所有多边形判断,效率也非常高,复杂度几乎接近O(n),下面解释原理。

一、扫线法概念

扫线法其实是一种常用的平面空间算法思路,在很多算法中均有应用,例如我的文章Voronoi图和扫线法中就是应用扫线法来实现Voroni图的计算,从而实现三角剖分。扫线法的典型作用是降维,将原本的二维空间数据,转化为一位空间数据,这样可以大大提升计算效率。

如上图,假设存在多边形ABCDEFG,我们在执行运算时,依照从左至右,从下到上的规则,好像有一条扫描线推遍整个相关平面区域,这样的计算方法,就称为扫线法。
所谓的从左到右不难理解,图中的每个顶点都被从左至右排序,而通过这些顶点的垂线将平面划分成了若干区域,这些被划分的区域我们可以称为不同的扫描阶段,因此以上共有A、G、B、F、D、C、E七个阶段。
那么,从下到上代表什么意思?先看下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值