Я использую силовую схему. Новые узлы d3 создаются щелчком внутри элемента div. Узел создается в точке щелчка. Узлы представляют собой прямоугольники размером 50 пикселей x 50 пикселей. Сразу же после создания узла я установил его фиксированное свойство в true, чтобы он не двигался сам по себе. Я не называю force.drag. Узлы можно перемещать, удерживая клавишу ctrl и перетаскивая узел. Ребро может быть создано путем перетаскивания мыши (без удерживания клавиши Ctrl) с одного узла на другой.Схема размещения D3: как поддерживать заданное минимальное расстояние между узлами?
Теперь я хочу добавить следующую функцию. Ближайшее расстояние между любыми двумя узлами должно быть больше определенного минимума. Вы можете принять любое положительное значение для минимального расстояния. Предположим, что 100 пикселей. Когда любой новый узел создается слишком близко к существующему узлу, узлы должны перемещаться так, чтобы расстояние между любыми двумя узлами становилось более 100 пикселей. Аналогично, когда один узел перемещается и перемещается слишком близко к другому, то также узлы должны перемещаться для поддержания минимального расстояния в 100 пикселей.
Не существует условий для перемещения узлов и в каком направлении. Один из способов - проверить координаты и расстояния, а затем вычислить, какие узлы двигаться, сколько, в каком направлении и выполнить код соответственно. Но есть ли более простой способ в d3?
Там нет более простого способа. Макет силы не поддерживает указание минимального расстояния. –