缩放插值
基于 “平滑高效的缩放和平移” 由 Jarke J. van Wijk 和 Wim A.A. Nuij 编写的关于在二维平面上的两个视图之间平滑缩放的插值器。
interpolateZoom(a, b)
js
d3.interpolateZoom([30, 30, 40], [135, 85, 60])(0.5) // [72, 52, 126.04761005270991]
示例 · 源代码 · 返回两个视图 a 和 b 之间的插值器。每个视图都定义为包含三个数字的数组:cx、cy 和 width。前两个坐标 cx、cy 表示视窗的中心;最后一个坐标 width 表示视窗的大小。
返回的插值器包含一个 interpolate.duration 属性,该属性以毫秒为单位编码推荐的转换持续时间。此持续时间基于 xy 空间中曲线轨迹的路径长度。如果您想要更慢或更快的转换,请将其乘以任意缩放因子(如原始论文中描述的 V)。
interpolateZoom.rho(rho)
js
d3.interpolateZoom.rho(0.5)([30, 30, 40], [135, 85, 60])(0.5) // [72, 52, 51.09549882328188]
源代码 · 给定一个 缩放插值器,返回使用指定曲率 rho 的新的缩放插值器。当 rho 接近 0 时,插值器几乎是线性的。默认曲率为 sqrt(2)。