谁能解释一下 D3 中 delaunay 实现的 alpha 过滤吗?

civ*_*ain 2 javascript delaunay convex-hull d3.js

如图所示,您可以使用它来过滤 delaunay 三角剖分并获得完美的限制。

谁能解释一下magik算法吗?

Viv*_*idD 5

背景

除了经典的Delaunay 三角剖分算法之外,实际上并没有太多魔力,该算法d3.geom.delaunay()在 D3 中作为函数实现。

在您链接到的示例中,alpha 形状被实现为修改后的 Delaunay 三角剖分,这样一来,任何至少一侧大于alpha(在示例中具有 value 50)的三角形都会从三角剖分中删除。

这就是为什么结果看起来像这样:(原始顶点、Delaunay 三角剖分和 Alpha 形状)

在此输入图像描述

细节

d3.geom.delaunay()返回三角形数组,因此这段代码:

mesh = d3.geom.delaunay(offset(vertices,600,0)).filter(function(t) {
    return dsq(t[0],t[1]) < asq && dsq(t[0],t[2]) < asq && dsq(t[1],t[2]) < asq;
});
Run Code Online (Sandbox Code Playgroud)

与事实 一起asqalphadsq()是计算平面上两点之间距离平方的函数,导致删除至少一侧大于 的任何三角形alpha,从而产生上图中的第三个图像。

希望这可以帮助。