我正在尝试用D3库设计一个物理重力模拟,但我没有太多运气.
‘layout’ API reference声明物理重力可以通过正的“充电”参数来实现,但我不确定这是如何工作的.
我现在试图实现的是一个SVG元素,其中包含多个可变加权和大小的rects,它们以不同的速度上升,最终离开视口 – 它们的权重将定义它们上升的速度. (基本上,我只是试图从视口顶部实现全局引力.)
是否有可行的方法按照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以将布局中心移到视口上方