我正在尝试使用 D3 库设计一个物理重力模拟,但运气不佳。 'layout' API reference声明物理重力可以通过正“电荷”参数实现,但我不确定这将如何工作。
我现在尝试实现的是一个 SVG 元素,它包含多个可变权重和大小的矩形,它们以不同的速度上升,最终离开视口(viewport)——它们的权重将定义它们上升的速度. (基本上,我只是想在视口(viewport)顶部之外实现全局引力。)
按照D3的兵力布局,有没有可行的办法呢?我只是在寻找概念性的解决方案,但也欢迎示例和代码片段。
提前致谢!
最佳答案
这里有几个想法:
您可以直接在 tick 事件处理程序中修改节点的垂直位置:
force.on("tick", function(e) { nodes.forEach(function(o, i) { o.y -= o.weight / 30; }); node.attr("cx", function(d) { return d.x; }) .attr("cy", function(d) { return d.y; }); });
您需要为此方法设置 force.gavity(0)。
- 或者您可以使用 force.gravity:它将节点拉向布局中心,您可以指定 svg transfromation 以在视口(viewport)上方移动布局中心
关于javascript - D3 物理重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572219/