计算几何知识(其一)

前提
  • 最近闲着没事
  • 就看了计算几何的一些知识
构建凸包
Incremental Construction
  • 复杂度为O(n2)
  • 原理就是不停蚕食下一个合适的点。判断原理是,第X个极点和前n个极点构成的多边形会有切点S,T。
    在这里插入图片描述
  • 和这两个点的连线,把原先多边形分成两个区域
  • 对于每一个点都有一个前驱和后继,
  • 将每一个点和x连线,然后判断该点的前驱和后继相对该连线的左右方位。会得到如下模式
  • st区域是左右
  • ts区域是右左
  • s点是左左
  • t点是右右
Javas March方法
  • 复杂度为O(n2)
  • 原理就是,不停的寻找下一个合适的极点,通过逐步蚕食的策略构建凸包。
  • 在寻找第s个点的时候,s和k构成极边,众所周知,剩下的点都在极边的另一边
  • 所以我们遍历剩下的每一个点,假设这个点是极点s
  • 如果找到相比ks更靠左的点就替换当前点作为s,继续判断。
  • 一直到结束
    在这里插入图片描述
Graham Scan算法
  • 它的原理也很简单
  • 先做预排序
  • 就是找到一个极点,然后把剩下的点和他形成的极角来排序
    在这里插入图片描述
  • 准备两个栈,T栈的出口对着S栈的入口
  • S栈的入口先放入1和2两个点,把剩余点全部放入T栈中
  • 1拿到T栈栈顶第一个元素T1
  • 2判断T1是否在S1->S2连成的线的左边
  • 3在,就说明当下是极点,放入S栈,继续步骤1
  • 4不在,就把S栈元素S1出栈,继续步骤2
  • 最终S栈的所有元素,从栈底到栈顶就是所有构成凸包的所有极点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值