Почему эта сеть из 5 тел постоянно вращается? - PullRequest
0 голосов
/ 07 октября 2019

Я не мог понять, почему эта простая конфигурация сети продолжает вращаться вокруг узла 2, за исключением тех случаев, когда некоторые толчки вокруг отметки 30s на этом снимке экрана , после чего она возобновляет вращение. В установке используется сетевой модуль visjs с forceatlas2 resolver .

Мой параметр параметров для конструктора сети выглядит следующим образом:

get options(): Options {
return (
  this.optionS || {
    nodes: {
      shape: 'dot',
      size: 30,
      font: {
        size: 32
      },
      borderWidth: 2,
      shadow: true
    },
    edges: {
      width: 2,
      shadow: true,
      smooth: {
        enabled: true,
        roundness: 0.5,
        type: 'cubicBezier',
        forceDirection: 'vertical'
      }
    },
    physics: {
      forceAtlas2Based: {
        avoidOverlap: 0.25,
        gravitationalConstant: -95,
        centralGravity: 0.01,
        springLength: 100,
        springConstant: 0.19,
        nodeDistance: 175,
        damping: 0.11
      },
      minVelocity: 0.75,
      solver: 'forceAtlas2Based'
    }
  }
);
}

Угловой компонент хоста предоставляет эти 5 узлов:

const nodes = new DataSet([
  { id: 1, label: 'Node 1' },
  { id: 2, label: 'Node 2' },
  { id: 3, label: 'Node 3' },
  { id: 4, label: 'Node 4' },
  { id: 5, label: 'Node 5' }
]);

const edges = new DataSet([
  { from: 1, to: 3 },
  { from: 1, to: 2 },
  { from: 2, to: 4 },
  { from: 2, to: 5 }
]);
this.graphData = { nodes, edges };

Сетевая директива просто создает экземпляр Сети следующим образом:

this.network = new Network(
    this.el.nativeElement,
    this.graphData,
    this.options
  );

Любое понимание того, почему происходит такое постоянное движение, будет оценено. Мне нужно понять, какие факторы нужно учитывать при создании «стабильных» узлов, чтобы пользователям не приходилось гоняться за узлами / ребрами, чтобы щелкать / взаимодействовать с ними.

1 Ответ

1 голос
/ 08 октября 2019

Увеличьте minVelocity или демпфирование, чтобы остановить это.

То, как вы его настроили, физика фактически никогда не прекращает перемещать узлы вокруг. Узлы 1, 2, 4 и 5 удерживаются в звездообразном положении благодаря центральной гравитации. Узел 3 затем отталкивает узел 1, но, поскольку все подключено, он в итоге перемещает все узлы. Благодаря ребру между узлами 1 и 3 сила сильнее в одном направлении, чем в другом. Это тогда применяет нескончаемую силу ко всей договоренности, которая заканчивается медленным вращением вокруг узла 2.

Более быстрый вращатель: enter image description here

...