以Graph JavaScript 框架为起点,您可以执行以下操作。我假设该类Node
已通过属性width
和进行了扩展height
。然后,在函数 中layoutRepulsive
,必须更改计算节点距离的表达式以考虑这些大小:
var dx = Math.max(0, Math.abs(node2.layoutPosX - node1.layoutPosX) - 0.5*(node2.width+node1.width));
var dy = Math.max(0, Math.abs(node2.layoutPosY - node1.layoutPosY) - 0.5*(node2.height+node1.height));
Run Code Online (Sandbox Code Playgroud)
最大函数强制将 0 作为距离的最小可能值,即使它们的边界框重叠也是如此。