D3的力量基础?

时间:2018-08-31 10:45:06

标签: d3.js force-layout

我正在努力了解alphaDecayvelocityDecay的影响,并且我不愿意尝试在上下文中解释alphastrength的概念D3。从我的经验水平来看,source of the force module太短了,太甜了,我还没有找到“ D3.For Dummies傻瓜”来帮助我加快步伐。

从我的测试中,我从未将任何显着的图形行为变化与不同的alphaDecay值相关联,并且我只看到了velocityDecay在极端设置(接近0或1)下的影响。 link.strength()仍然是个谜。

我也从不真正确定何时或为何致电simulation.restart()

所有这些导致我无法制定出令人满意的图形的策略。我觉得我总是处于爆炸性或惰性的图形的边缘。

我玩过this interesting tool并阅读了this的大部分内容,但实际上并没有绕过alphalink.strength和我提到的其他内容

您如何理解这些值以及如何配置它们?

1 个答案:

答案 0 :(得分:1)

因此,tick文档中专门记录了它们的工作。它说:

  

将当前alpha增加(alphaTarget-alpha)×alphaDecay;然后调用每个注册的部队,并传递新的alpha;然后将每个节点的速度减速度×velocityDecay;最后通过速度增加每个节点的位置。

我会这样描述他们:

Alpha

alpha我认为是系统的温度,它会在一段时间内衰减,我将用它来解释。当温度达到0(alphaTarget)时,它会自动停止一切移动,因为它假定没有能量了。这样模拟就停止了。

系统充满能量的持续时间取决于3件事:当前的alphaalphaTarget(这是我们应该停止的时间)和alphaDecay(这是我们失去热量的速度)从系统。越大,力量停止的速度就越快。

速度

速度是指力内单个项目的速度。因此,每次滴答之后,我们都会进行更新,并且速度会降低velocityDecay比。因此,我将velocityDecay视为摩擦。摩擦力越大,单个节点停止运动的速度就越快。

重新启动

通常,您在某些用户操作(删除节点,添加链接等)的后面调用simulation.restart()