在c#中排列长顶点来形成一个多边形
本文关键字:多边形 一个 排列 顶点 | 更新日期: 2023-09-27 18:10:06
我有一个围绕中心点形成多边形的Lat长列表。我想顺时针获得latlong的有序列表,以便连接该有序列表中的latlong顶点并形成非凸多边形
从一组顶点生成多边形是定义不清的,如下面的例子所示。
让
A = ( 0, 0)
B = ( 3,-3)
C = ( 6,-1)
D = ( 4,-1)
E = ( 4, 1)
F = ( 6, 1)
G = ( 3, 3)
顺时针形成多边形的一种可能性是
A-G-F-E-D-C-B-A
和排序
A-G-E-F-C-D-B-A
是另一个。第一个多边形是凹的,第二个多边形是凸的。如果去掉A
,剩下的点在G-B
轴上镜像,甚至可以从给定的顶点集定义两个非凸多边形。更准确地说,顶点的集合将是
B = ( 3,-3)
C = ( 6,-1)
D = ( 4,-1)
E = ( 4, 1)
F = ( 6, 1)
G = ( 3, 3)
E' = ( 2, 1)
F' = ( 0, 1)
D' = ( 2,-1)
C' = ( 0,-1)
和两个不同的多边形是
G-E-F-C-D-B-C'-D'-E'-F'-G
和
G-F-E-D-C-B-D'-C'-F'-E'-G
.
然而,如果一个人对给定顶点的凸壳多边形(凸壳的边界)感兴趣,有许多不同的算法来计算它