在D3.js中查找图形的质心

时间:2013-03-29 19:57:11

标签: svg d3.js centroid

我试图通过使用整个图形的质心来允许整个图形(例如可折叠的树形图(http://mbostock.github.com/d3/talk/20111018/tree.html)在可视化中移动,并且不知道最佳的行动方案是什么将此图形视为离散节点并使用质心坐标进行操作。如何计算图形的质心,允许图形动态调整大小以允许新节点,从而重新计算质心?

2 个答案:

答案 0 :(得分:0)

听起来在你的情况下,更简单的方法是获取图形的容器(即SVG)并计算其中心点。假设您绘制的图形的边距不是太大和/或不平衡,则行为与计算图形的质心非常相似,但更容易实现。

代码看起来像这样。

var centerx = svg.getBBox().x + svg.getBBox().width/2,
    centery = svg.getBBox().y + svg.getBBox().height/2;

答案 1 :(得分:-1)

也许这很有帮助:http://graphstream-project.org/doc/Algorithms/Centroid_1.0/。我知道你在D3.js的背景下问。但是GraphStream中的质心可能会有一些东西可以利用。