【发布时间】:2011-03-05 09:32:37
【问题描述】:
以下问题是二维的,所以建议答案时可以做一些简化。
我需要从一组点/线段创建封闭区域(由线段或仅由一组点定义 - 凸多边形)。
基本上我使用 Voronoi 来生成“道路”。然后我改变了一些数据。现在我需要一种方法来遍历该数据(仍然是线段,但不再符合 Voronoi)并生成与“道路”接壤的“社区”。
我看了一些图表和最短路径理论,但我无法弄清楚。
从逻辑上讲,可以通过从一个点从左边缘开始,使用可用线的最短路径(仅使用顺时针方向)找到返回该点的路。然后将这条线标记下来并从数据中删除。然后你可以重复同样的过程,得到所有类似的区域。
我试图实现它,但它没有让我到任何地方,因为我想不出一种方法来编写可以做到这一点的 C++ 代码。问题在于从特定点的可用线中选择最逆时针的线。我所做的所有基于角度的数学都给出了错误的答案,因为 sin/cos 是在 c++ 中实现的。
所以总结一下 - 如果你能帮助我用一种全新的方法来解决这个问题,那很好,如果不能,你能帮助我找到一种方法来编写找到返回起点的最短顺时针路径的代码部分将线段设置为返回路径。
编辑:添加了一张图片来说明我想要做什么。
在此处查看图片 -(需要 10 个声望才能在此处发布:P)
我有一组点(紫色小点)。另一个数组定义了哪些点组成了一条线(道路)。我想要一种方法来定义被道路包围的区域,这样我就可以在其中放置建筑物或较小的道路并针对边缘进行测试,以便将每个区域分开。希望这能为您提供有关如何解决此问题的更多信息。
感谢您的帮助!
【问题讨论】:
-
你能发一张图片吗?有时它比一堵文字墙要好,而且大多数时候会激起读者阅读文字墙的兴趣:)
-
@Jacob - 完成了,现在你可以看到我想要做的事情的图像了 :)
-
您找到答案了吗?能否请您再次添加图片链接?
标签: c++ graph geometry polygon