[笔记本: 演算法] 多边形篇 Part 1 - Simple Polygon 简单多边形

多边形

多边形定义为各点互相直线连接所围成的无开口图形。
多边形又包含以下几个种类:

Simple Polygon 简单多边形Convex Polygon 凸多边形Concave Polygon 凹多边形

http://img2.58codes.com/2024/201136222YDe5rsAaC.png

简单多边形

简单多边形必须符合多边形条件且任何一边都没有交叉。
但如何以N点建造一个简单多边形并且确定任何一边都没有交叉?

Naïve Method 朴素法

简单方法利用点列表的顺序连接各点,在与最后一点与第一点连接完成多边形。
因为这种方法是随机依照列表顺序(任何一种列表)连接各点,因此画出来的图形并无绝对。
下图为两种成功画出简单多边形的例子。
http://img2.58codes.com/2024/20113622v5PI99eK6u.png

结论

这种方法在大多数例子都无法成功画出简单多边形,因为这种方法没有一定的点对点连接顺序。
下图为非简单多边形的例子。
http://img2.58codes.com/2024/201136227bAYIFeodS.png

Circular Scan 圆型扫描

圆型扫描是在所有点中选择一个中心点进行扫描,每次扫描到得点加入列表中,如果同一条线上两个以上的点,则以离中心点最近的优先加入列表。
虽然随机选择中心点有可能成功建立简单多边形,但也可能错误选择中心点。
下图为随机选择一点(非从点列表中选择)为中心点的例子。
http://img2.58codes.com/2024/201136224v2fy9f3L0.png

如果加以分析,会发现随机选择一点为中心点,还是会无法让第一点及最后一点正确连接。
http://img2.58codes.com/2024/20113622r4CYfIMsgs.png

为了避免第一点及最后一点错误连接,中心点必须选择点列表的一点。
但是随机选择,还是无法确保所建立的多边形为简单多边形。
因此,可以选择在最大或最小X值的点或是在最大或最小Y值的点。
下图为选择最大X值的点。
http://img2.58codes.com/2024/20113622IHj5Z8Oj5c.png

以中心点加以分析会发现,第一点及最后一点所延伸到圆的直线,会是扇形的两边。
http://img2.58codes.com/2024/20113622BmKlmXHtVT.png

结论

如果随机选择中心点或是点列表中随机一点,都无法确保所建立的多边形为简单多边形。
但是选择在最大或最小X值的点或是在最大或最小Y值的点,可以改善并建立简单多边形

传送门:[笔记本: 演算法] 多边形篇 Part 2 - Convex Hull 凸包
传送门:[笔记本: 演算法] 多边形篇 Part 3 - Furthest Pair of Points 最远两点配对


关于作者: 网站小编

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

热门文章