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