D3 强制基础?

D3 force fundamentals?

我很难理解 alphaDecayvelocityDecay 的影响,而且我不愿意尝试解释 alphastrength 的概念D3的上下文。根据我的经验水平,source of the force module 简短而甜蜜 我还没有找到 "D3.force for Dummies" 让我加快速度。

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

我也真的不确定什么时候或为什么我应该打电话给 simulation.restart()

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

我玩过 this interesting tool and read most of this,但它并没有真正解决 alphalink.strength 和我提到的其他问题。

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

因此,他们所做的具体工作记录在 tick 文档中。它是这样说的:

Increments the current alpha by (alphaTarget - alpha) × alphaDecay; then invokes each registered force, passing the new alpha; then decrements each node’s velocity by velocity × velocityDecay; lastly increments each node’s position by velocity.

我会这样描述它们:

阿尔法

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

系统有能量的持续时间取决于 3 件事,电流 alpha,我们应该停止的 alphaTarget 和我们停止的速度 alphaDecay从系统中散发热量。越大,力停止得越快。

速度

速度是力内单个项目的速度。因此,在每次滴答之后,我们都会得到更新,并且速度会降低 velocityDecay 比率。所以我将 velocityDecay 视为摩擦。摩擦越大,单个节点停止得越快。

重启

通常您会在某些用户操作(删除节点、添加 link 等)后调用 simulation.restart()