API的描述令人困惑。我希望target
是模拟停止滴答的值,但是target
所做的并没有在API中定义。此外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:
如果指定了min,则将最小alpha设置为[0,1]范围内的指定数字并返回此模拟。如果未指定min,则返回当前最小alpha值,默认值为0.001。当前alpha小于最小alpha时,模拟的内部计时器停止。默认的α衰减率~0.0228对应于300次迭代。
如果指定了target,则将当前目标alpha设置为[0,1]范围内的指定数字并返回此模拟。如果未指定target,则返回当前目标alpha值,默认值为0。
事实上,像alphaMin
和alphaTarget
这样的概念很难理解,最重要的是它们在文档中没有得到很好的解释。
你在comment几乎是正确的:
好吧我只是通过将alpha记录到控制台来解决大部分问题:alphaMin设置模拟将停止运行的alpha级别(tick-events停止发生),alphaTarget重新定义alpha最终结束的位置(渐近线),所以而不是慢慢走向0,它会慢慢变为0.2。 Lord只知道alphaTarget的目的是什么。 (强调我的)
因此,您理解这些概念的缺失部分是理解“alphaTarget的目的是什么”。这很简单:
如您所知,alphaMin
设置最小alpha,当当前alpha低于它时,它将负责停止模拟。因此,如果我们将alphaTarget
设置为高于alphaMin
的值,则模拟永远不会停止。
例如,看看这个分叉的bl.ocks,我将alphaTarget
设置为0.8:https://bl.ocks.org/GerardoFurtado/91368069a381009d30468aa9774c0de3/e58316dfdb05b68b02e5692c26b360c990da0383
如您所见,该模拟将永远运行。
当然,即使有很高的alphaTarget
值,如果alphaMin
更高,模拟也将停止,但是以一种非常不愉快和突然的方式。例如,alphaMin = 0.991
和alphaTarget = 0.99
:https://blockbuilder.org/GerardoFurtado/72961f5e63eb75b6202d9e24dc25e67b