У меня есть четыре категории, затем, по мере изменения года, я хочу, чтобы пузыри перемещались между группами. В настоящее время я меняю год в штате, затем у меня есть ловушка, которая следит за годом и снова вызывает функцию симуляции, когда год меняется.
Я проверил, что год обновляется правильно, и findCenterOfGravity fun c возвращает правильное значение, похоже, что он ведет себя так, как будто функция галочки застряла на полпути. Когда пузыри начинают двигаться, но никогда не попадают в новую группу.
Я попытался удалить столкновение, изменив альфу, альфа-декай.
Это мое веселье createSimulation c:
function createSimulation() {
const forceX = d3
.forceX()
.x(d => findCenterOfGravity(d).x)
.strength(1)
const forceY = d3
.forceY()
.y(d => findCenterOfGravity(d).y)
.strength(1)
const collision = d3.forceCollide(radius * 2).strength(0.2)
d3.forceSimulation(data, d => d.code)
.force("collision", collision)
.force("x", forceX)
.force("y", forceY)
.alpha(0.04)
.alphaDecay(0)
.on("tick", () => {
d3.selectAll(`.circle`)
.attr("cy", d => d.y)
.attr("cx", d => d.x)
})
}
Это мое репозиторий github https://github.com/eadehemingway/levels весь соответствующий код находится в файле index.tsx в папка pages.
Я потратил часы, пытаясь заставить это работать, и прочитал много статей и подобных примеров кода и не могу решить это, поэтому любая помощь будет принята с благодарностью!