d3.js是否具有反向缓解功能?
使用d3.js,我们可以在标准化时间t之外获得更轻松的时间,通常在[0,1]范围内 例如:d3.js是否具有反向缓解功能?,d3.js,D3.js,使用d3.js,我们可以在标准化时间t之外获得更轻松的时间,通常在[0,1]范围内 例如: d3.easeCubic(0.25) = 0.0625 我们怎样才能逆转,我们怎样才能找到已知的x d3.easeCubic(X) = 0.0625, X ??? 这里的答案是立方根,但仍然是 问题在于可重用性,ease函数可以更改为d3.easeExpIn或'd3.easeCircleOut,或任何其他,您需要自己发明反向函数,还是它们隐藏在任何地方?首先,您的数学是错误的d3.0(0.25)将为您
d3.easeCubic(0.25) = 0.0625
我们怎样才能逆转,我们怎样才能找到已知的x
d3.easeCubic(X) = 0.0625,
X ???
这里的答案是立方根,但仍然是
问题在于可重用性,ease函数可以更改为d3.easeExpIn或'd3.easeCircleOut,或任何其他,您需要自己发明反向函数,还是它们隐藏在任何地方?首先,您的数学是错误的<代码>d3.0(0.25)将为您提供
0.0625
:
var easy=d3.1立方(0.25);
console.log(简单)代码>
我使用了@Gerardo Furtado的答案,但是反向函数没有很好地工作,所以我写了另一个
功能立方体输出(t){
return((t*=2)它进一步增加了问题的复杂性,即反转elasticXXX、backXXX和bounceXXX缓和函数也会产生非唯一的解决方案。感谢详细的答案,但遗憾的是它没有像d3.easeCublic.inverse(0.25)那样实现
,因为有很多ease函数,其中一些比cubic函数更复杂。@GerardoFurtado如果有两个值,[2,-2],为什么不将它们作为数组返回?@GerardoFurtado此外,我们主要寻找[0,1]范围内的规范化值@user3468806问题不是返回一个简单的数组,而是找到所有可能的解决方案,这有时可能非常复杂。只是出于好奇,你会用它做什么?@altocumulus我有一个带有点的折线图,当一个值被“传递”时,它会通过窗帘方法()进行动画处理通过窗帘,一个点通过半径从0到4的过渡显示。传递值的时刻是让超时=x(值)/width*持续时间
。窗帘随着放松而移动,因此我必须像让超时=数学.cbrt(x(值)/width那样对其进行修改*duration
对于d3.easeCubicIn
我认为,最好使用自定义的tween函数来实现这一点,在该函数中,您可以完全控制当前的缓和值。然而,这本身就值得一提。我完全同意这个问题已经有了一个不错的答案。