【问题标题】:order list of Lat long vertices to form a polygon in C#在 C# 中形成多边形的 Lat 长顶点的顺序列表
【发布时间】:2014-06-25 05:49:18
【问题描述】:

我有一个纬度列表,它围绕一个中心点形成一个多边形。我想顺时针获取经纬度的有序列表,以便连接该有序列表中的经纬度顶点并形成非凸多边形。

【问题讨论】:

  • StackOverflow 不是 我想要那个,给我代码 站点。你试过什么了?你在哪里卡住了?
  • 我试图了解如何使用 Lat 和 Long 作为点列表来形成多边形。有什么方法可以解决这个问题?

标签: c# algorithm polygons non-convex


【解决方案1】:

从一组顶点生成多边形的定义不明确,如下例所示。

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.

但是,如果对给定顶点的凸包多边形(凸包的边界)感兴趣,则有许多不同的algorithms 来计算它。

【讨论】:

  • 或者简单地说,就像任何一个小时候试图解决点连接难题的人一样——画一个 poligon,点的顺序至关重要。
  • @ZoharPeled 感谢您的直截了当的重新表述。但是我想提供一个特定的例子,它有几个顶点,涵盖所有情况并且只使用不相交的边。
  • 感谢您的建议。我想知道当这些顶点用空间坐标(lat/long)定义时,这将如何应用?
  • @user1701450 我不明白你的评论,在上面的例子中,顶点 是用空间坐标给出的 - 还是你的意思不同?
  • 我的意思是我有一组 lat n long 坐标,我正在订购它。你能提供一些伪代码来实现你上面解释的方法,并在加入闭合多边形时对点进行排序吗?
猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 2017-11-09
  • 2013-01-13
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 2011-11-06
相关资源
最近更新 更多