force method

  1. @override
void force([
  1. double? alpha
])
override

Implementation

@override
void force([double? alpha]) {
  int n=_links.length;
  for (int k = 0; k < _iterations; ++k) {
    for (int i = 0; i < n; ++i) {
      var link = _links[i];
      var source = link.source;
      var target = link.target;
      var x = jsOr(target.x + target.vx - source.x - source.vx, jiggle(_random.lcg())).toDouble();
      var y = jsOr(target.y + target.vy - source.y - source.vy, jiggle(_random.lcg())).toDouble();
      var l = m.sqrt(x * x + y * y);
      l = (l - _distances[i]) / l * alpha! * _strengths[i];
      x = (x * l);
      y = (y * l);
      var b = _bias[i];
      target.vx -= x * b;
      target.vy -= y * b;
      source.vx += x * (b = 1 - b);
      source.vy += y * b;
    }
  }
}