首页 > 其他 > 详细

【学习笔记:计算几何基础3】 Convex Hull

时间:2018-10-06 12:50:56      阅读:197      评论:0      收藏:0      [点我收藏+]

Ahead

10.6.2018

算法5(GS)

最优算法O(nlogn)

实现

1.预处理排序
选取LTL与第二LTL 对剩下的点进行极角排序 (ToLeft Text)
技术分享图片
2.开两个栈T与S (开头相对!!! ,为了好看)将已连接的边放入S,其余的按极角大小放入T
技术分享图片
3.三个指针指向S的栈顶与次栈顶以及T的栈顶S[0],S[1],T[0]

代码

   while(!T.empty()) 
    {
        ToLeft(S[1],S[0],T[0])?S.push(T.pop()):S.pop(); 
    }    

4.最后对S栈自底向上是凸包的环路描述
技术分享图片
这是大概的流程图

理解

每次退S栈表示一次回溯,否则是一次加边,那么对于弹S 表示S栈顶的元素偏内,而新节点更外面,就目前而言应该往右拐 (模拟一下就可以看出了)
技术分享图片

正确性

技术分享图片
下一个拓展点一定位于黄区或者蓝区,如果黄区直接拓展,如果蓝区,那么显然就是一个退栈的过程 也就是把在右边的退了,从而达到我们需要的状态

【学习笔记:计算几何基础3】 Convex Hull

原文:https://www.cnblogs.com/PiCaHor/p/9746986.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!