alphaTarget和alphaMin有什么区别? simulation.alphaMin([min])simulation.alphaTarget([target])

问题描述 投票:10回答:1

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:

simulation.alphaMin([min])

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

simulation.alphaTarget([target])

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

javascript d3.js force-layout
1个回答
2
投票

事实上,像alphaMinalphaTarget这样的概念很难理解,最重要的是它们在文档中没有得到很好的解释。

你在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.991alphaTarget = 0.99https://blockbuilder.org/GerardoFurtado/72961f5e63eb75b6202d9e24dc25e67b

© www.soinside.com 2019 - 2024. All rights reserved.