alphaTarget和alphaMin有什么区别?

时间:2017-09-26 12:05:55

标签: javascript d3.js force-layout

API的描述令人困惑。我希望target是模拟停止滴答的值,但API中未定义target所做的事情。此外,alpha本身未在API中定义,但我发现在另一个网站上: https://roshansanthosh.wordpress.com/2016/09/25/forces-in-d3-js-v4/

  

模拟的一个重要方面是alpha。 alpha是介于0和1之间的数字,用于定义模拟进度的程度。当模拟开始时,alpha设置为1,并且该值根据alphaDecay速率缓慢衰减,直到达到模拟的alphaTarget。一旦alpha值小于alphaTarget,模拟就会停止。默认情况下,alphaTarget设置为0.1

现在正式使用API​​:

simulation.alphaMin([min])

  

如果指定了min,则将最小alpha设置为[0,1]范围内的指定数字并返回此模拟。如果未指定min,则返回当前最小alpha值,默认值为0.001。当前alpha小于最小alpha时,模拟的内部计时器停止。默认的alpha衰减率~0.0228对应300次迭代。

simulation.alphaTarget([target])

  

如果指定了target,则将当前目标alpha设置为[0,1]范围内的指定数字并返回此模拟。如果未指定target,则返回当前目标alpha值,默认值为0.

1 个答案:

答案 0 :(得分:2)

alphaMinalphaTarget之类的概念确实很难理解,最重要的是,文档中对它们的解释不是很好。

您在comment中几乎正确地找到了它:

  

好吧,我仅通过将alpha记录到控制台就知道了大部分内容:alphaMin设置了模拟将停止运行(滴答事件停止发生)的alpha级别,alphaTarget重新定义了alpha最终结束的位置(渐近线) ),因此与其缓慢地变为0,它会慢慢地变为0.2。 领主只知道alphaTarget的用途 。 (强调我的)

因此,您难以理解这些概念的部分是理解“ alphaTarget的目的是什么” 。这很简单:

如您所知,alphaMin设置最小Alpha,当当前Alpha低于该最低Alpha时,它将负责停止模拟。因此,如果将alphaTarget设置为高于alphaMin的值,则模拟永远不会停止。

例如,看看这个分叉的bl.ocks,我将alphaTarget设置为0.8:https://bl.ocks.org/GerardoFurtado/91368069a381009d30468aa9774c0de3/e58316dfdb05b68b02e5692c26b360c990da0383

如您所见,该模拟将永远运行。

当然,即使alphaTarget较高,如果alphaMin较高,模拟也会停止,但是会以一种非常令人讨厌和突然的方式。例如,alphaMin = 0.991alphaTarget = 0.99https://blockbuilder.org/GerardoFurtado/72961f5e63eb75b6202d9e24dc25e67b