Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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中的反弹减缓效果_D3.js_Easing_Bounce - Fatal编程技术网

D3.js 参数化D3中的反弹减缓效果

D3.js 参数化D3中的反弹减缓效果,d3.js,easing,bounce,D3.js,Easing,Bounce,在下图中,黑线描述了反弹功能,如中所示。有没有办法使反弹变小,如红线所示 没有任何本地方法可以改变这种特定的缓和方法 但是,如果查看,您将看到反弹步骤是硬编码的: var b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 /

在下图中,黑线描述了反弹功能,如中所示。有没有办法使反弹变小,如红线所示


没有任何本地方法可以改变这种特定的缓和方法

但是,如果查看,您将看到反弹步骤是硬编码的:

var b1 = 4 / 11,
    b2 = 6 / 11,
    b3 = 8 / 11,
    b4 = 3 / 4,
    b5 = 9 / 11,
    b6 = 10 / 11,
    b7 = 15 / 16,
    b8 = 21 / 22,
    b9 = 63 / 64,
    b0 = 1 / b1 / b1;
因此,您可以轻松地使用不同的值集创建自定义缓和

仅供比较,以下是D3版本:

d3.1选择SVG A.附加圆 attrr先生,20岁 .20岁 .自然减员,50 过渡 1.轻松地;轻松地 .期限2000 .128,280;
以下代码是我在bl.ocks.org上Mike Bostock的一个页面上找到的,它正是我想要的,描述了一个参数化的反弹:

它定义了以下功能:

function bounce(h) {
  if (!arguments.length) h = 0.25;
  var b0 = 1 - h,
      b1 = b0 * (1 - b0) + b0,
      b2 = b0 * (1 - b1) + b1,
      x0 = 2 * Math.sqrt(h),
      x1 = x0 * Math.sqrt(h),
      x2 = x1 * Math.sqrt(h),
      t0 = 1 / (1 + x0 + x1 + x2),
      t1 = t0 + t0 * x0,
      t2 = t1 + t0 * x1,
      m0 = t0 + t0 * x0 / 2,
      m1 = t1 + t0 * x1 / 2,
      m2 = t2 + t0 * x2 / 2,
      a = 1 / (t0 * t0);
  return function(t) {
    return t >= 1 ? 1
        : t < t0 ? a * t * t
        : t < t1 ? a * (t -= m0) * t + b0
        : t < t2 ? a * (t -= m1) * t + b1
        : a * (t -= m2) * t + b2;
  };
}

在精神上,我想到了一些类似的东西,但不记得为什么我没有发布它;-看到它在运行,我想知道为什么它在结尾看起来如此紧张,更像是猛烈的驱动然后是弹性的反弹…@altocumulus它的紧张可能是因为我在几分钟内更改了值和三元运算符,而没有对它进行更深入的关注。正如我所说,更好的数学在这里是必要的,这只是为了展示一个解决方案。
  d3element.transition()
      .duration(1500)
      .ease(bounce(0.2))
      ...omissis...