[笔记本: 演算法] 多边形篇 Part 2 - Convex Hull 凸包

Convex Hull 凸包

凸包是在n个点中的所围成的最小凸多边形。
凸包不需要包含所有的点但是需要将所有的点围在凸包内。
凸包所围的多边形与橡皮筋的概念相似,例如将橡皮筋套在钉板上(红框),橡皮筋所围的多边形与凸包相似。
http://img2.58codes.com/2024/201136227evCnECFMV.png

凸多边形

凸多边形必须符合以下条件:

为一多边形,各边为直线且无开口必须为简单多边形,任何一边均无交叉每个内角需小于180度

简易的判断法为,所有的角皆转向同样方向(顺时钟或逆时钟)。
http://img2.58codes.com/2024/20113622mxazEBEx0X.png

Graham Scan Algorithm (Graham扫描)

Graham扫描是结合圆型扫描及上述的转向判断方法所得到的扫描法。
传送门:圆型扫描解释

步骤ㄧ:圆型扫描

圆型扫描可以确保所建立的图形为简单多边形。
http://img2.58codes.com/2024/20113622lYMlxQJY5g.png

步骤二:角度转向判断

依照圆型扫描后所确认的连接顺序开始製图,同时每连接一个点,都需要确定角度转向是否一致。
如果连接一点时转向改变,将开始追朔过去之前所连结的点,并将最后连接的点与上一点连接,直到转向一致为止。
转向完全一致且最后一点与第一点后,会建立出一个凸多边形(凸包)。

转向判断

同方向

如果连接下一点时转向同方向则继续连接,直到转向不同方向或连接至第一点。
http://img2.58codes.com/2024/20113622iOPqijIkev.png

不同方向

如果连接下一点时转向不同方向则追朔之前所连接的点。
http://img2.58codes.com/2024/20113622GCvI6fGXTh.png
移除上一步骤所连接的线,并且连接最后达到的点与上一阶段所达到的点,直到转向同方向。
当转向同方向时,继续连接下一点。
http://img2.58codes.com/2024/20113622hroj4LTxt7.png

完整步骤图

http://img2.58codes.com/2024/20113622YYXZGVR0cl.png

传送门:[笔记本: 演算法] 多边形篇 Part 1 - Simple Polygon 简单多边形
传送门:[笔记本: 演算法] 多边形篇 Part 3 - Furthest Pair of Points 最远两点配对


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章