最小凸包算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
p14 P3(出) A3 A2 A1 A0
p11
p10 p6
p12
p8 p7 p9
p5 P4 (入栈)
p13
(出栈) P3
P4(进) p2 p1 p0
p2
H( P 0)
p1
3.继续以A2为基 点,判断 A2A3P5是否为 逆时针方向。若 是,P5进栈,若 不是,P4出栈, P5进栈。
P4(出栈)
p12
p8 p7 p9
P4 P3 p1
P 5 (保存)
p13 p2
p6 p5 p2 p1 p0
H( P 0)
4. 以A3为基点, 判断A3A4P7, 按照前面的方法, 可得保存P6, P7进栈;
A5 A4 A3 A2 A1 A0
p11
p10 P6(保存)
p12
p8
p7 P4 P3 p1
P5
p9
p7 p6 p5 p2 p1 p0
p14
p13 p2
H( P 0)
5.按照此方法, 可得栈中的点依 次为:
A8
p11
p10 P6
A7
A6
A5 A4
A3 A2 A1 A0
p14 p12 p11 p10 p6 p5 p2 p1 p0
p12
p8
p7 P4 P3 p1
P5
p9
p14 p13
p2
H( P 0)
凸包几何中心 即凸包重心,由 于该凸包质量分 布均匀,故凸包 几何中心的X,Y 坐标即为最小凸 包点X,Y坐标的 的平均值。
p2 p1 p0
3.以P1为基点, 判断 P1P2P3是 否为逆时针方向, 若是,P3进栈。 再A2以为基点, 判断A2A3P4。
p14
p11
p10 p6
p12
p8 p7 p9
p4 p3
p5
p13 p2 p1
A3 A2 A1 A0
p3 p2 p1 p0
H( P 0)
3.以A2为基点, 判断 A2A3P4是 否为逆时针方向, 若是,P4进栈,若 不是,P3出栈, P4进栈。
A3 A2 A1 A0
p11
p10 p6
p12
p8 p7 p9
P4 P3
P5
p14
p13 p2 p1
P5(进栈) p2 p1 p0
H( P 0)
3.继续以A2为 基点,判断 A2A3P6,可知 A2A3P6为逆时 针方向,故A6 进栈。
p14 A4 A3 A2 A1 A0
p11
p10 P6 (进栈)
பைடு நூலகம்
凸包(Convex Hull)是一个计算 几何(图形学)中 的概念。用不严谨 的话来讲,给定二 维平面上的点集, 凸包就是将最外层 的点连接起来构成 的凸多边型,它能 包含点集中所有点 的。
这个算法是由数学大师葛立恒(Graham)发 明的,他曾经是美国数学学会主席,AT&T首席 科学家以及国际杂技师协会主席。 Graham 算法是在某种意义上来说求解二 维静态凸包的一种最优的算法,这种算法目前 被广泛的应用于对各种以二维静态凸包为基础 的ACM题目的求解。Graham算法的时间复杂 度大约是nlogn,因此在求解二维平面上多个点 构成的凸包时,消耗时间相对较少。
1. 在所有点中 选取y坐标最小 的一点H,当作 基点。如果存 在多个点的y坐 标都为最小值, 则选取x坐标最 小的一点。坐 标相同的点应 排除。
H
2.然后按照其 它各点p和基点 构成的向量 <H,p>与x轴 的夹角进行排 序,夹角由小 到大进行逆时 针扫描。并依 次排序。
p11
p10 p6
p11
p10 P6
p12
p8
p7 P4 P3 p1
P5
p9
p14 p13
p2
H( P 0)
p12
p8 p7 p9
p5 p4
p14
p13 p3 p1 H( P 0) p2
3.将P0, P1, p2 放入栈中。并将 栈内的点依次排 号并命名为Ai(i 以0为起点), P0, P1必为凸包的两 点
A2 A1 A0
p11
p10 p6
p12
p8 p7 p9
p5 p4
p14
p13 p3 p1 H( P 0) p2
p11
p10 p6
p12
p8 p7 p9
p5 P4 (入栈)
p13
(出栈) P3
P4(进) p2 p1 p0
p2
H( P 0)
p1
3.继续以A2为基 点,判断 A2A3P5是否为 逆时针方向。若 是,P5进栈,若 不是,P4出栈, P5进栈。
P4(出栈)
p12
p8 p7 p9
P4 P3 p1
P 5 (保存)
p13 p2
p6 p5 p2 p1 p0
H( P 0)
4. 以A3为基点, 判断A3A4P7, 按照前面的方法, 可得保存P6, P7进栈;
A5 A4 A3 A2 A1 A0
p11
p10 P6(保存)
p12
p8
p7 P4 P3 p1
P5
p9
p7 p6 p5 p2 p1 p0
p14
p13 p2
H( P 0)
5.按照此方法, 可得栈中的点依 次为:
A8
p11
p10 P6
A7
A6
A5 A4
A3 A2 A1 A0
p14 p12 p11 p10 p6 p5 p2 p1 p0
p12
p8
p7 P4 P3 p1
P5
p9
p14 p13
p2
H( P 0)
凸包几何中心 即凸包重心,由 于该凸包质量分 布均匀,故凸包 几何中心的X,Y 坐标即为最小凸 包点X,Y坐标的 的平均值。
p2 p1 p0
3.以P1为基点, 判断 P1P2P3是 否为逆时针方向, 若是,P3进栈。 再A2以为基点, 判断A2A3P4。
p14
p11
p10 p6
p12
p8 p7 p9
p4 p3
p5
p13 p2 p1
A3 A2 A1 A0
p3 p2 p1 p0
H( P 0)
3.以A2为基点, 判断 A2A3P4是 否为逆时针方向, 若是,P4进栈,若 不是,P3出栈, P4进栈。
A3 A2 A1 A0
p11
p10 p6
p12
p8 p7 p9
P4 P3
P5
p14
p13 p2 p1
P5(进栈) p2 p1 p0
H( P 0)
3.继续以A2为 基点,判断 A2A3P6,可知 A2A3P6为逆时 针方向,故A6 进栈。
p14 A4 A3 A2 A1 A0
p11
p10 P6 (进栈)
பைடு நூலகம்
凸包(Convex Hull)是一个计算 几何(图形学)中 的概念。用不严谨 的话来讲,给定二 维平面上的点集, 凸包就是将最外层 的点连接起来构成 的凸多边型,它能 包含点集中所有点 的。
这个算法是由数学大师葛立恒(Graham)发 明的,他曾经是美国数学学会主席,AT&T首席 科学家以及国际杂技师协会主席。 Graham 算法是在某种意义上来说求解二 维静态凸包的一种最优的算法,这种算法目前 被广泛的应用于对各种以二维静态凸包为基础 的ACM题目的求解。Graham算法的时间复杂 度大约是nlogn,因此在求解二维平面上多个点 构成的凸包时,消耗时间相对较少。
1. 在所有点中 选取y坐标最小 的一点H,当作 基点。如果存 在多个点的y坐 标都为最小值, 则选取x坐标最 小的一点。坐 标相同的点应 排除。
H
2.然后按照其 它各点p和基点 构成的向量 <H,p>与x轴 的夹角进行排 序,夹角由小 到大进行逆时 针扫描。并依 次排序。
p11
p10 p6
p11
p10 P6
p12
p8
p7 P4 P3 p1
P5
p9
p14 p13
p2
H( P 0)
p12
p8 p7 p9
p5 p4
p14
p13 p3 p1 H( P 0) p2
3.将P0, P1, p2 放入栈中。并将 栈内的点依次排 号并命名为Ai(i 以0为起点), P0, P1必为凸包的两 点
A2 A1 A0
p11
p10 p6
p12
p8 p7 p9
p5 p4
p14
p13 p3 p1 H( P 0) p2