有人能告诉我以下代码到底发生了什么?我知道它用于缩放,但是在这个上下文中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];
提前致谢。
答案 0 :(得分:11)
很好documented:
计算指定要素的投影边界框(以像素为单位)。这对于放大特定功能非常方便。此方法观察投影流执行的任何剪切和重采样。
如下图所示,中心是高度的一半和宽度的一半。有关缩放计算,请参阅my answer to this question about centering an object。
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];