Сила направлена, функция тика не работает должным образом. пузыри застревают между категориями - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть четыре категории, затем, по мере изменения года, я хочу, чтобы пузыри перемещались между группами. В настоящее время я меняю год в штате, затем у меня есть ловушка, которая следит за годом и снова вызывает функцию симуляции, когда год меняется.

Я проверил, что год обновляется правильно, и 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.

Я потратил часы, пытаясь заставить это работать, и прочитал много статей и подобных примеров кода и не могу решить это, поэтому любая помощь будет принята с благодарностью!

...