【发布时间】:2012-01-05 09:47:15
【问题描述】:
我试图在给定的数据集中找到边缘相邻的 Voronoi 区域的点。我是计算几何的新手,但从网上阅读来看,使用 Delaunay 镶嵌似乎是一种简单的方法。 This PDF 甚至有一个引理指出
引理 2.4 S 的两个点由一条 Delaunay 边连接当且仅当它们的 Voronoi 区域 边缘相邻。
所以,我发现我的数据集的 delaunay 细分为
dt = delaunay(dataset); %using delaunayn() since dataset can be multidimensional
但是现在,当我将此与该数据集的 voronoi 图一起绘制时,我发现 delaunay 边返回的连接点的区域实际上并不相邻。
这是我用来将 Voronoi 和 Delaunay 绘制在一起的代码:
voronoi(dataset(:, 1),dataset(:, 2));
hold on;
dt = delaunayn(dataset);
triplot(dt, dataset(:, 1), dataset(:, 2), 'red');
这是输出:
作为问题的一个例子,看图右端的X点连接到左下角附近的Y点。
另一个例子是在this SO question - 点 1 连接到 2 和 3,即使它们不相邻,并且似乎没有任何方式 1 和 2 可以共享一条边,即使延伸到无穷。这个问题实际上是促使我用上面的代码测试 delaunayn 输出的原因。
为什么会发生这种情况,我如何才能真正获得我需要的边缘相邻区域?
注意:要查看完整尺寸和清晰度的图像,请右键单击并选择“查看图像”或类似选项。
【问题讨论】:
-
感谢您以全尺寸查看图像的提示,不知道它被按比例缩小(顺便说一句,过滤不好,至少在 Firefox 中)。