path.bounds()如何工作?

时间:2014-08-14 14:17:45

标签: d3.js

有人能告诉我以下代码到底发生了什么?我知道它用于缩放,但是在这个上下文中2-d边界数组做了什么?

var bounds = path.bounds(d), 
    dx = bounds[1][0] - bounds[0][0], 
    dy = bounds[1][1] - bounds[0][1],
    x = (bounds[0][0] + bounds[1][0]) / 2,
    y = (bounds[0][1] + bounds[1][1]) / 2,
            scale = .9 / Math.max(dx / width, dy / height),
    translate = [width / 2 - scale * x, height / 2 - scale * y];

提前致谢。

1 个答案:

答案 0 :(得分:11)

很好documented

  

计算指定要素的投影边界框(以像素为单位)。这对于放大特定功能非常方便。此方法观察投影流执行的任何剪切和重采样。

如下图所示,中心是高度的一半和宽度的一半。有关缩放计算,请参阅my answer to this question about centering an object

enter image description here


Here is the new (2016) documentation link for D3 v4这里是对输出数组结构的解释:

  

边界框由二维数组表示:[[x 0,y 0],[x 1,y 1]],其中x 0是最小x坐标,y 0是最小y坐标,x 1是最大x -coordinate,y 1是最大y坐标。

宽度和高度:

//       x-max          x-min
width  = bounds[1][0] - bounds[0][0];

//       y-max          y-min
height = bounds[1][1] - bounds[0][1];