D3.js d3 force布局是否可以设置节点屏障?

D3.js d3 force布局是否可以设置节点屏障?,d3.js,force-layout,D3.js,Force Layout,嗨,我是D3新手,我找不到任何D3部队布局有障碍物的例子,这些障碍物是路径。我是这样想的 像这样但不规则的边界,不是一个盒子。 我不明白为什么不可能,示例中使用的代码是: function tick() { node.attr("cx", function(d) { return d.x = Math.max(radius, Math.min(width - radius, d.x)); }) .attr("cy", function(d) { return d.y = Math.ma

嗨,我是D3新手,我找不到任何D3部队布局有障碍物的例子,这些障碍物是路径。我是这样想的

像这样但不规则的边界,不是一个盒子。
我不明白为什么不可能,示例中使用的代码是:

function tick() {
node.attr("cx", function(d) { return d.x = Math.max(radius, Math.min(width - radius, d.x)); })
    .attr("cy", function(d) { return d.y = Math.max(radius, Math.min(height - radius, d.y)); });
只需设置节点中心的最大值和最小值(cx和cy)。因此,如果可以编写一个表示要创建的边形状的方程式,则应该能够包含该形状中的节点

困难可能在于镜像svg另一侧的形状

比如:

function tick() {
node.attr("cx", function(d) { return function(d){ 
d.x = Math.max(radius, Math.min(d3.select(this).attr("cy")- radius, d.x)); }}
.attr("cy", function(d) { return d.y = Math.max(radius, Math.min(height - radius, d.y)))
}

我认为应该在右手边设置一条对角线,坡度为1:1,但显然没有进行测试,这可能会大大降低力。

相关(D3 V4):您是否希望在特定版本的D3上执行此操作?这可能也很有帮助:检测点是否位于多边形中我希望在v4中执行此操作,并认为可能其中一个节点可以忽略力,专门放置并释放负电荷,排斥其他节点。