![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算几何
文章平均质量分 93
fengkeyleaf
经常二次元,偶尔敲代码
展开
-
清华计算几何大作业(十):CG2017 PA5-2 FruitNinja(水果忍者)· 下
Half-plane Intersection算法非常的直接,使用的是Divide-and-Conquer(分治)进行计算,每次递归返回时,我们需要使用MapOverlay来计算半平面的交集(这个交集必为Covexll),但这个交集和之前的MapOverlay不太一样,这里的交集结果可能是平面,线段,或者是点。这个方法非常的直接,这里使用教材上面的图例。这里给到题目网页上的一个实例的可视化结果,左边的结果是线段在对偶平面求得的半平面相交区域,右边的结果是可视化解集中的其中一个解(一条满足题意的直线)原创 2022-08-20 09:49:19 · 586 阅读 · 1 评论 -
清华计算几何大作业(十):CG2017 PA5-2 FruitNinja(水果忍者)· 上
计算几何算法:1)Map Overlay,详见教材 2.3 计算子区域划分的叠合(2.3 Computing the Overlay of Two Subdivisions) 和 4.2 半平面求交 (4.2 Half-Plane Intersection) - 本章节主要讨论算法;2)4 线性规划:铸模制造 (Linear ProgrammingManufacturing with Molds) - 最优算法原创 2022-08-20 04:41:13 · 348 阅读 · 0 评论 -
MapOverlay & Boolean Operations 实现讲解(PS/Photoshop布尔运算底层算法)
从理论上来说,上述所有操作都可以SegmentIntersection算法中解决,但是这样做,Vertex和Edge相交会有问题,因为Edge会被分割成两段,会破坏原来Segment的输入集的范围,导致后续的操作变得困难。PS中的布尔运算可以说是设计师们非常强大和实用的工具之一,笔者探究计算几何的旅程之中,发现了这个算法设计得非常的精妙,所以尝试了实现它!2)Vertex和Vertex必然至少有一条完全重合的Edge,我们只保留其中一个Vertex,去除重合Edge,重定向其他Edge;...原创 2022-07-15 22:20:50 · 366 阅读 · 0 评论 -
清华计算几何大作业(九):CG2017 PA2-1 Shortest Path in The Room (房间中的最短路径)
这里给到必要观看的视频课程章节,这些内容对理解和实现 Triangulation 算法至关重要,标记有绿色√为必看章节:关于这道题的思路分析,笔者在小破站上面发布了系列讲解视频,相关内容视频都有涉及,大家可以观看相关视频,这里就不再赘述:※ 这部分的伪代码是笔者自己翻译的,所以和中文教材上面有些许不同3.2 三角拆分4. 可视化结果示例这里展示一个相对复杂的案例,输入多边形为正交多边形( Orthogonal Polygon ),且为迷宫多边形,用这个案例大家可以体会到整个算法项目可以应用到很多领原创 2022-07-13 19:45:59 · 251 阅读 · 0 评论 -
清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 下 | Voronoi Diagrams 构造实现讲解
在生成Voronoi Diagrams之后,我们需要查找某个点位于哪个Voronoi Cell之中,这个操作如果不借助Point Location,我们需要遍历所有Voronoi Cell,查询时间复杂度将会Unacceptable!那么我们可以借助Point Location算法将Voronoi Diagrams分割成一个个Trapezoid。我们在Trapezoidal Map之中进行Point Location,之后查找当前Trapzoid隶属于哪一个Voronoi Cell,即可完成题目要求的高效查原创 2022-07-13 18:00:38 · 342 阅读 · 0 评论 -
清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 中 | Voronoi Diagrams 构造实现讲解
将无限半边(Infinite Half-edge)连接到Bounding Box的思路也不难,首先,我们先将Bounding Box也看成一个方形的DCEL结构,然后计算出无限半边与边界边的节点,然后进行连接即可:但在进行连接的时候,需要注意四点:首先,在结束计算Voronoi Diagrams之后,Status Tree中存储的中间节点里面就包含了所需连接到R上的Infinite Half-edges,比如之前的例子:大家可以看到右侧Status Tree的中间节点刚好存储了需要进行连接的无限半边:e10原创 2022-07-13 15:23:24 · 172 阅读 · 0 评论 -
清华计算几何大作业(八):CG2017 PA2-2 Find Dancing Partners (寻找舞伴) · 上 | Voronoi Diagrams 构造实现讲解
这里给到必要观看的视频课程章节,这些内容对理解和实现 Voronoi Diagrams 算法至关重要,标记有绿色√为必看章节:问题描述:CG2017 PA2-2 Find Dancing Partners (寻找舞伴)这个作业属于最高难度一档,Voronoi Diagrams算法本身难理解,而且从这个算法开始,需要多个算法进行结合才能最终解决问题,因此大家需要有一定的心理准备哒~根据题目的提示,这道题有两种解题方法:因为为了结合我们学习的内容,这里我们主要介绍第一种解题方法,第二种大家有时间可以自己思考一下原创 2022-07-12 22:06:29 · 182 阅读 · 0 评论 -
清华计算几何大作业(七):CG2017 PA4-2 Orthogonal Windowing Query (正交矩形窗口查询)
清华计算几何大作业(七):CG2017 PA4-2 Orthogonal Windowing Query (正交矩形窗口查询)原创 2022-06-12 10:37:49 · 453 阅读 · 0 评论 -
清华计算几何大作业(六):CG2017 PA4-1 Planar Range Query (平面区域查询)
清华计算几何大作业(六):CG2017 PA4-1 Planar Range Query (平面区域查询)原创 2022-06-11 11:06:14 · 467 阅读 · 0 评论 -
清华计算几何大作业(五):CG2017 PA3-2 Which wall are you looking at (你在看哪面墙)
清华计算几何大作业(五):CG2017 PA3-2 Which wall are you looking at (你在看哪面墙)原创 2022-06-10 15:29:55 · 168 阅读 · 0 评论 -
清华计算几何大作业(四):CG2017 PA3-1 Delaunay Triangulation (Delaunay三角剖分)
清华计算几何大作业(四):CG2017 PA3-1 Delaunay Triangulation (Delaunay三角剖分)原创 2022-06-06 21:22:15 · 451 阅读 · 0 评论 -
清华计算几何大作业(三):CG2017 PA1-2 Crossroad (十字路口)
清华计算几何大作业(三):CG2017 PA1-2 Crossroad (十字路口)原创 2022-06-04 16:11:19 · 368 阅读 · 0 评论 -
清华计算几何大作业(二):CG2017 PA5-1 Dynamic Convex Hull(动态凸包)
清华计算几何大作业(二):CG2017 PA5-1 Dynamic Convex Hull(动态凸包)原创 2022-06-02 15:27:53 · 259 阅读 · 0 评论 -
清华计算几何大作业(一):CG2017 PA1-1 Convex Hull (凸包)
清华计算几何大作业(一):CG2017 PA1-1 Convex Hull (凸包)原创 2022-06-02 10:51:33 · 375 阅读 · 0 评论 -
清华计算几何大作业思路分析和代码实现
距离第一次接触计算几何到现在,不知不觉已经过去了一整年的时间,从一开始什么都不会,被DCEL折磨的死去活来,到现在基本还能玩转DCEL,这个过程真是既折磨又快乐,计算几何确实比较难,但是也是充满快乐的,借用邓俊辉老师在edX计算几何课程主页上面的一句话——体味几何之趣,领悟算法之美,可以完美诠释了笔者学习计算几何的感受,所以这里我给大家分享并整理一下清华x计算几何课程所涉及的10个大作业,以及它们的解题思路,可视化结果,以及我自己实现的代码,希望这些能让对计算几何有兴趣的童鞋根据自己的兴趣和学习进度,来选择原创 2022-06-01 23:48:52 · 786 阅读 · 0 评论 -
Voronoi图(四):抛物线的妙用
在上一节,我们已经了解了Voronoi图大致的构造思路:还是基于平面扫描线策略,但是需要引入抛物线来计算Voronoi Edge和Vertex,也就是上一节视频例子中所提到的海滩线(Beach Line,位于扫描线前进方向的后方)。接下来我们就来详解一下如何通过引入抛物线和海滩线,来完成Voronoi图的构建。原创 2022-03-29 23:41:22 · 727 阅读 · 0 评论 -
Voronoi图(三):构造Voronoi图
对于Voronoi的构造,我们究竟使用什么策略比较合适呢?针对这个问题,大家可以结合之前我们讲解的算法策略来分析一下呢。如果你之前看过笔者所著的其他计算几何算法详解,你应该对下面这些算法策略感到无比亲切原创 2022-03-26 23:15:24 · 2906 阅读 · 0 评论 -
Voronoi图(二):基本概念和性质
接下来,我们就先来看看Voronoi图的概念。就笔者自己的理解来说,Voronoi Diagrams(Voronoi图)主要由两部分组成:1)四个数据结构;2)一个基本性质。四个数据结构依次为。原创 2022-03-23 23:08:51 · 7231 阅读 · 0 评论 -
Voronoi图(一):塞尔达背后的计算几何
玩过塞尔达传说:荒野之息的朋友,应该都会赞叹海拉鲁风景的美丽。我们的林克时不时一人独自在战后废墟中探索一座座神庙,有时武器库告急,也会偶尔探望一下亲爱的人马们。现在林克一个人游荡在海拉鲁大地上,遇到了一个难题:他突然想回到河畔驿站修整一下,恢复心心,但是他究竟需要传送哪个传送塔,才能离驿站最近呢?下图给出了河畔驿站的位置,以及三个比较近的传送塔:平原之塔,双子山之塔和初始之塔原创 2022-03-22 12:15:33 · 1293 阅读 · 1 评论 -
点定位(五):处理退化情况·续(Point Location: handle degenerate cases)
点定位(五):处理退化情况·续原创 2022-03-20 21:19:49 · 896 阅读 · 26 评论 -
点定位(四):处理退化情况(Point Location: handle degenerate cases)
在前面几节,我们讲解了如何对梯形图和搜索结构进行拆解和更新,但是我们对输入做出了不少限制(即不允许退化情况),这一节我们就把关注点放在各种退化情况的处理上。总的来说,笔者总结的退化情况一共有三种。原创 2022-03-19 16:15:22 · 379 阅读 · 2 评论 -
点定位:如何拆分更新梯形图和二分搜索结构 · (三):处理S(Update trapezoidal map and search structure in point location)
点定位:如何拆分更新梯形图和二分搜索结构 · (三)原创 2021-12-21 11:49:30 · 167 阅读 · 0 评论 -
点定位:如何拆分更新梯形图和二分搜索结构 · (二):处理P和Q(Update trapezoidal map and search structure in point location)
点定位:如何拆分更新梯形图和二分搜索结构 · (二):处理P和Q原创 2021-12-21 11:37:41 · 149 阅读 · 0 评论 -
点定位:如何拆分更新梯形图和二分搜索结构 · (一):总思路分析(Update trapezoidal map and search structure in point location)
点定位(Point Location)是计算几何中非常重要的基础算法,一个最常用的应用就是GPS定位,在定位查找中,我们会用到点定位的算法进行快速查找。而且通过学习点定位算法,大家应该会见识到如何在空间内进行二分查找,以及如何创建这样一个支持在空间中进行二分查找的数据结构(即Search Structure,SS)。在此之前,我们一般接触的二分都是在一个数组中进行查找。原创 2021-12-20 22:40:03 · 575 阅读 · 0 评论 -
计算几何:In Circle Test
计算几何:In Circle Test原创 2021-08-03 19:50:47 · 379 阅读 · 1 评论 -
计算几何课堂:单调多边形拆分
计算几何课堂:单调多边形拆分原创 2021-07-30 15:20:47 · 404 阅读 · 0 评论 -
计算几何课堂:三角拆分
计算几何课堂:三角拆分原创 2021-07-30 15:19:28 · 252 阅读 · 1 评论 -
计算几何课堂:DCEL(双向边链表)
计算几何课堂:DCEL(双向边链表)原创 2021-07-30 15:17:56 · 1740 阅读 · 6 评论 -
计算几何课堂:几何寻路之旅(含代码)
因为几何寻路之旅所涉及的算法很多,所以我出了一个系列教学视频,讲解了下面相关的四个算法和两个代码实现问题:1. 单调多边形拆分;2. 三角拆分;3. 对偶图 + BFS;4. 漏斗算法;5. DCEL;6. 项目代码解析;...原创 2021-07-29 14:31:25 · 637 阅读 · 0 评论 -
几何寻路:漏斗算法(Funnel Algorithm)
几何寻路:漏斗算法(Funnel Algorithm)原创 2021-07-17 00:02:34 · 4585 阅读 · 2 评论 -
DCEL:如何连接和添加边
DCEL:如何连接和添加边原创 2021-07-16 15:05:39 · 686 阅读 · 0 评论 -
单调多边形拆分:如何处理水平线
单调多边形拆分:如何处理水平线原创 2021-07-16 00:32:26 · 728 阅读 · 1 评论 -
几何求交(二):直线和圆的交点
几何求交:直线和圆的交点原创 2021-06-08 23:04:21 · 15792 阅读 · 1 评论 -
几何求交(一):直线和直线的交点
几何求交:直线和直线的交点原创 2021-06-08 16:53:59 · 6496 阅读 · 5 评论