我的力有向图有两类节点:Regular 和 Beacon。我希望我的信标能够击退正规军,而不是其他信标。
我正在使用我自己的函数将Regulars 移动到Beacon 之外的某个半径范围内,但这真的很笨重——Regulars 聚集在Beacon 的4 个角落周围,并且由于我的碰撞解决功能,Regulars 有时会与Beacon 重叠。
另一方面,使用力电荷解决了 4 个角问题和重叠问题。不幸的是,它引入了一个新问题:信标相互排斥。我正在做这样的事情来设置我的费用:
force.charge(function(d){return d instanceof Beacon ? -1*(650 + nodes.length*20) : 0;})
当然,这会导致每个信标都带有负电荷。不幸的是,即使我在 force.start() 上将每个 Beacon 的 Fixed 属性设置为 true,它们仍然相互排斥并飞过图形。
我有什么方法可以告诉 D3 它应该只对常规节点施加排斥力吗?
或者你对模仿/修补 D3 的充电行为有什么建议吗?