当前位置: 首页 > 知识库问答 >
问题:

如何对非凸多边形中的顶点排序(如何从多个解决方案中找到一个)

微生嘉
2023-03-14

我有和这里一样的问题:如何在一个简单的非凸多边形中对顶点排序,但我没有可以使用的解决方案。

我有点的坐标,需要找到一些多边形。一个点列表有多个解决方案并不重要。我需要一些算法来找到其中一个。不管是哪一个。我真的不知道怎么解决这个问题。

(我已经在数组中存储了坐标,我想在Javascript中使用一些算法)

谢谢。

共有1个答案

薛烈
2023-03-14

首先,找到包含所有顶点的边界框的中心。我们称这个点为C

根据每个点相对于C的角度对顶点列表进行排序。可以使用atan2(point.y-C.y,point.x-C.x)查找角度。如果两个或多个顶点具有相同的角度,则靠近C的顶点应位于第一位。

然后,按照列表中出现的顺序画出你的点。你最终会得到一个非相交且可能非凸的星爆图案。示例:

 类似资料:
  • 我在location _ table(point _ location geometry)中存储了位置,现在我在谷歌地图上绘制了一个多边形,并将该多边形(几何)传递给后端,我想找到该多边形内的所有位置。 当我将多边形从谷歌地图传递到后端时,这给了我随机的结果。它没有给我多边形内的所有点。它给了我甚至在多边形之外的点。 在 postgis 中准确查找多边形内所有点的正确方法是什么(也包括边界情况)

  • 我想创建一个多边形从形状点。

  • 注意,有一个多边形ABCIHGJKLMLKA,它包括节点KLM,但多边形CDEG不包括F。 我读过关于这个问题的解决方案,但没有像我这样的leaf要求。在以前的解决方案中存在的一些公理是,每条边只使用两次,但是死端边总共需要遍历四次。也就是说,存在一个包含所有外部节点ABCDEFGJKLMLKA的多边形,但是它会被丢弃,因为它将朝外。 下面介绍了一种类似问题的解决方案,即sans the leaf

  • 我有一个数据库,其中一个表(ca_licenses)是商业地址,另一个表是市议会区多边形的公共模式(ca_la_la_council)。 我运行此查询是为了将议会表中的地区号码放在企业地址表中: 我的问题是我总是得不到任何结果。两个几何列都是几何类型,SRID是4326。 示例ca_licenses数据:https://raw . githubusercontent . com/pour safe

  • 我正在使用Boost图库的一些项目,我想找到的次数,一个边是重复在一个图。例如, 假设我有两个节点,node1和node2,它们之间有一条边(node1,node2)。属性包含时间戳开始、结束..并且在图中可以有许多这样的边,它们具有不同的时间戳。例如。 我知道在一个boost图中,给定两个顶点,我们可以使用下面的方法来查找图中是否存在边。 但这可能意味着即使存在具有不同边缘属性的多个边缘-->P

  • 总结: 我试图在r中计算大量多边形的面积。我读过几篇关于如何做的文章(例1 扩展说明: 我实际上是在计算澳大利亚维多利亚州的房产面积。多边形表示这些属性。我从Spatial Datamart下载了所有维多利亚州的VicMaps简化模型1和2。然而,考虑到形状文件的大小,我不得不将搜索范围缩小到一个地方政府区域(LGA),并计算多边形区域(仅用于测试)。形状文件为15.5MB。 这是有效的,但它不是