【发布时间】:2016-09-28 22:07:56
【问题描述】:
我正在尝试创建一些类来构建 O(N*logN) 中点云的3D 凸包。
我已经解决了复杂度为 O(N²) 的简单问题,其中 N 是点数。 它的工作原理是这样的:
我有一个 std::list 点。这些点是我创建的一个类的实例。 我将列表随机化并从列表中一一提取所有点。 对于每一点,我都会检查从该点可以看到哪些方面。所以,复杂度太高了,因为facets是O(N)(超过6*N)
然后我做了一些操作来删除可见的面,找到地平线并将点与地平线联系起来。有关这些操作的信息无助于解决我的问题。
我需要的是一个创建和处理二分图的示例,它可以快速添加和删除节点。
我尝试构建自己的类,但失败了,因为我的图表太慢了。 但是前几天发现boost库有解决办法:this。
但我不知道如何使用所有这些选项创建我的简单图表,我不明白如何创建它。我已经阅读了很多次这个文档......
现在,问题是: 如何使用 boost 构建二部图?
一定是:
- 双向;
- 二分:一种类型的节点将被指向,另一种类型的节点将是 Dcel::Face;
- Pointd Nodes 必须链接该点可以看到的所有方面;
- Dcel::Face 方法必须链接所有可以看到它的点。
- 快速删除和添加操作。
我不关心内存使用情况。我只需要它快点。
这是我的第一个问题,所以我不知道是否清楚。 如果有人好心给我一个例子,说明我如何用我给你的这些特征构建一个图表,那就太好了。 如果你知道其他方法可以轻松创建它,那也很好。
【问题讨论】:
-
我发现了一个类似的问题,但对我没有帮助。也许可以帮助别人。 this 。我的问题很相似,但我想要 2 个不同类型的节点。
-
你的节点类型携带的信息是什么?