- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
下面的问题是二维的,所以建议答案时可以做一些简化。
我需要从一组点/线段创建封闭区域(由线段或仅由一组点定义 - 凸多边形)。
基本上我使用 Voronoi 生成“道路”。然后我更改了一些数据。现在我需要一种方法来遍历该数据(它仍然是线段,但不再符合 Voronoi)并生成与“道路”接壤的“社区”。
我看了一些图表和最短路径理论,但我想不通。
从逻辑上讲,这可以通过从一个点的左边缘开始,使用可用线路的最短路径(仅使用顺时针方向)找到返回该点的方式来完成。然后标记这条线并从数据中删除。然后您可以重复相同的过程并获得所有类似的区域。
我试图实现它,但它并没有让我取得任何进展,因为我想不出一种方法来编写可以做到这一点的 C++ 代码。问题在于从特定点的可用线中选择最逆时针的线。我做的所有基于角度的数学都给出了错误的答案,因为 sin/cos 是在 c++ 中实现的。
总结一下——如果你能帮我用一种全新的方法来解决这个问题,那很好,如果不能,你能帮我找到一种方法来编写代码的一部分,找到回到起点的最短顺时针路径使用设置的线段作为返回路径。
编辑:添加了一张图片来说明我想做什么。
在此处查看图片 -(需要 10 个声望才能将其发布到此处 :P)
我有一组点(紫色小点)。另一个数组定义了哪些点构成了一条线(道路)。我想要一种方法来定义被道路包围的区域,这样我就可以在其中放置建筑物或较小的道路,并针对边缘进行测试,以便将每个区域分开。希望这能为您提供有关如何解决此问题的更多信息。
感谢您的帮助!
最佳答案
根据您的说明:
也许你可以试试这个:
由于 Voronoi,您可能已经有了任何给定
purple
蓝点的“邻近”点列表。现在给定一个紫色点 P 和一个邻居 Q,您可以考虑与线段 PQ 相交的道路。所有这些道路(即在 P 的邻居之间改变 Q)将可能形成 P 周围的封闭区域。
即使您没有“邻居”信息,您也可以尝试所有可能的
purple
蓝色点对,看看哪些线段恰好与一条道路相交。对于给定的点,这些道路的集合将在其周围形成一个封闭区域。
这可能不是最优的,但可能有效,尽管我还没有尝试证明它。
<罢工>抱歉,您的问题不是很清楚,但我想 Convex Hull会派上用场的。您可以在计算船体时使用线段的端点。
如果您想要多个不相交的“区域”,您可以尝试找到一条分隔线并分别运行凸包。
关于c++ - 如何从一组线段创建封闭区域(凸多边形)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069245/
从the documentation, 13.5.5: When the last parameter of a method is a closure, you can place the clos
Bjarne Stroustrup 写道: “友元类必须事先在封闭范围内声明或在非类范围内定义,立即封闭声明它为友元的类” 语句的第一部分不是多余的,因为“立即包含类的非类范围”包括“先前在封闭范围中
我有一个网格(如下例),其中包含外墙(标记为 W)、环境 block (E)、开放空间 (o) 和事件点 (A)。目前,此网格存储在 [,] 中,其中包含与给定点关联的所有数据。我试图确定是否包含一个
我正在尝试使用 this blogpost's approach to higher-kinded data without dangling Identity functors for the tr
在下面的代码中: package main import ( "fmt" "time" ) func asChan(vs ...int) <-chan int { c := m
我在传递和评估闭包列表时遇到困难。经过大量简化,该程序显示出与我正在尝试编写的程序相同的错误: use std::vec::flat_map; #[main] fn main() { let li
我正在努力成为一名好公民,并尽可能远离全局范围。有没有办法访问不在全局范围内的 setTimeout 变量? 因此,在此示例中,某人将如何取消“计时器”? myObject.timedAction =
考虑这个例子: def A(): b = 1 def B(): # I can access 'b' from here. print(b)
val listPlans: List = newPlans.mapTry { it.data.map { Plan(it.id, it.nam
我目前正在尝试使用SinonJS对我的 angular.service 进行单元测试,但是遇到了一个问题,希望有人可以阐明为什么会发生这种情况。我已经重构了当前的项目以说明当前的问题。 我还提供了DE
我正在使用 Go channel ,我想知道关闭 channel 和将其设置为 nil 之间有什么区别? 编辑: 在此example ,我想通过关闭 channel 或设置为零来断开发送者和接收者的连
我的应用程序有一个奇怪的行为,我不知道它来自哪里。我已经为 TextView 内容实现了 NSScanner,效果非常好。扫描器与文本存储结合使用,通过 TextView 委托(delegate)方法
我不知道如何让 MyBatis 生成封闭的 or 语句: WHERE x.token = ? AND ( (x.scene = 'A' OR x.scene = 'B')) 这是一个令人惊讶的简单
我不希望这是一个摄像头检测程序。这是一个程序,可以检测应用程序屏幕上颜色的传递。 我想要做的是检测大于 5x5 像素的黑色何时穿过屏幕上定义的空间区域。我想过用一个大区域来拉伸(stretch)整个宽
我一直在使用 RDFLib 来解析数据并将其插入到三元组中。我遇到的一个常见问题是,从关联数据存储库解析时,没有尖括号括起 URL。 要上传数据,我必须手动添加 并使用 URIRef重新创建 URL。
我已经阅读了很多有关此问题的帖子,但我仍然不确定我是否完全理解这些定义。 以下是我认为不同术语的示例。我是否走在正确的轨道上,或者我仍然不理解这些概念。谢谢 Array - unbound and o
我为我的 Android 应用设置了 GooglePlay 内部和封闭式 Alpha 测试设置。 它非常适合允许测试人员加入计划并安装应用程序,但是当我从测试人员电子邮件列表中删除测试人员时,他们仍然
我是一名优秀的程序员,十分优秀!