【发布时间】:2017-01-10 12:58:16
【问题描述】:
使用 d3.js,我们可以在标准化时间 t 中实现缓和时间,通常在 [0,1] 范围内
例如:
d3.easeCubic(0.25) = 0.0625
我们如何反转它,我们如何在已知 y 的情况下找到 x?
d3.easeCubic(X) = 0.0625,
X ???
这里的答案是三次根,但仍然是。
问题在于可重用性,缓动函数可以更改为d3.easeExpIn,或`d3.easeCircleOut,或任何其他,你需要自己发明反向函数,还是隐藏在任何地方?
【问题讨论】:
-
只是出于好奇,你会用它来做什么?
-
@altocumulus 我有一个带有值点的折线图,它通过窗帘方法进行动画处理 (bl.ocks.org/markmarkoh/8700606) 当窗帘“通过”一个值时,一个点通过从 0 到 4 的半径过渡出现. 传递值的时刻是
let timeout = x(value) / width * duration。幕布随着缓动而移动,所以我必须像let timeout = Math.cbrt(x(value) / width) * duration一样修改它为d3.easeCubicIn -
我认为,这最好使用自定义补间函数来完成,您可以完全控制缓动的当前值。然而,这本身就值得提出一个问题。这个问题已经得到了一个我完全同意的不错的答案。
标签: d3.js