【问题标题】:Why do I get an incorrect Voronoi diagram?为什么我得到一个不正确的 Voronoi 图?
【发布时间】:2013-01-05 00:59:54
【问题描述】:

我正在尝试为一组纬度/经度点生成 Voronoi 图。

var points = [["-87.63374","41.878723"],["-87.680622","41.829353"],["-87.631739","41.8768"],["-87.626149","41.884431"]] ;
var boundingRegion = d3.geom.polygon([
    [-88, 41.7],
    [-88, 42.3],
    [-87.5, 42.3],
    [-87.5, 41.7]
    ]);

var voronoi = d3.geom.voronoi(points).map(function(cell) {
    return boundingRegion.clip(cell);
});

document.write("<pre>"+JSON.stringify(voronoi, null, ' ')+"</pre>");​

我在这里有一个用于该基本示例的 JSFiddle:

http://jsfiddle.net/ZzjpC/2/

我输入 4 个点并使用一个简单的矩形对其进行裁剪。

这些点是这样的,我应该看到每个生成的 Voronoi 区域的至少一个裁剪顶点......单独的第一个不满足。

当您在 Google 地图上绘制它们时,多边形相交并且完全混乱。

如果您查看http://jsfiddle.net/ZzjpC/3/,最后一点已被删除,一切看起来都很好。

所以这是我的问题:我的点集是否有问题导致 Voronoi 图生成失败?或者这是一个 D3 错误,我应该告诉那些人?

【问题讨论】:

    标签: d3.js voronoi


    【解决方案1】:

    原来问题在于我的 Voronoi 站点 (points) 是字符串数组而不是浮点数,这是导致问题的原因。我的猜测是在某处发生了一个加法,它被作为字符串连接执行,并且破坏了事情。

    points 转换为浮点数而不是字符串可以解决问题。

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 1970-01-01
      • 2013-08-19
      • 2017-10-30
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多