python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示

凸包算法是计算几何中的最经典问题之一了。给定一个点集,计算其凸包。凸包是什么就不罗嗦了

本文给出了《计算几何——算法与应用》中一书所列凸包算法的Python实现和Matlab实现,并给出了一个Matlab动画演示程序。

啊,实现谁都会实现啦╮(╯▽╰)╭,但是演示就不一定那么好做了。

算法CONVEXHULL(P)

输入:平面点集P

输出:由CH(P)的所有顶点沿顺时针方向组成的一个列表

1.   根据x-坐标,对所有点进行排序,得到序列p1, …, pn

2.   在Lupper中加入p1和p2(p1在前)

3. for(i←3 ton)

4.   do 在Lupper中加入pi

5.   while(Lupper中至少还有三个点,而且最末尾的三个点所构成的不是一个右拐)

6.   do 将倒数第二个顶点从Lupper中删去

7.   在Llower 中加入pn和pn-1(pn在前)

8. for(i←n-2 downto1)

9.   do 在Llower 中加入pi

10.    while(Llower 中至少还有三个点,而且最末尾的三个点所构成的不是一个右拐)

11.    do 将倒数第二个顶点从Llower 中删去

12.  将第一个和最后一个点从Llower 中删去

(以免在上凸包与下凸包联接之后,出现重复顶点)

13.  将Llower 联接到Lupper后面(将由此得到的列表记为L)

14.  return(L)

看看,不是很多的样子是吧。

这里面需要说明的地方只有一点,那就是方向的判定问题。

你可能感兴趣的:(python,几何计算)