join upper and lower (remove duplicate end points)
❻
return computed hull
❶
排序是本算法中费用最大的部分。
❷
假设这两个点属于上凸包。
❸
左拐的线条意味着凸包上最后三个点并没有组成一个凸角。
❹
中间的点不满足条件,需要删除。
❺
用类似的办法计算下凸包。
❻
把这两个凸包
合并在一起。
图
9-3
展示了
凸包扫描
算法是如何构建上凸包的。可以看到,在整个过程中,该算法在
从左到右访问
P
中每个点的过程中,会不断地做出一些错误的决定。但是算法会不断地
检查并且删除掉三个点中不满足条件的中点,以纠正之前的错误。
图9-3:增量构建上凸包
9.3.1 输入/ 输出
输入是平面上的二维点集
P
。
凸包扫描
算法会计算出一个有序表
L
,包含顺时针组成凸包的
h
个顶点。即点
L
0
,
L
1
,…,
L
h-
1
组成的多边形,
h
是点的数目,这个凸包有
h
条边:
<
L
0
,
L
1
>
,
<
L
1
,
L
2
>
,…,
<
L
h
-1
,
L
0
>
。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.
O’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
I wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
I’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
I'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.