跳到內容

縮放插值

一個基於 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]

範例 · 原始碼 · 傳回兩個視圖 ab 之間的插值器。每個視圖定義為三個數字的陣列:cxcywidth。前兩個座標 cxcy 代表視窗的中心;最後一個座標 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)。