Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
d3.js是否具有反向缓解功能?_D3.js - Fatal编程技术网

d3.js是否具有反向缓解功能?

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.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)将为您提供
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函数来实现这一点,在该函数中,您可以完全控制当前的缓和值。然而,这本身就值得一提。我完全同意这个问题已经有了一个不错的答案。