apply method
Applies the force to the simulation.
Implementation
@override
void apply(ForceSimulation simulation) {
final nodes = simulation.nodes;
final alpha = simulation.alpha;
for (int i = 0; i < nodes.length; i++) {
final node = nodes[i];
if (node.fixed) continue;
for (int j = 0; j < nodes.length; j++) {
if (i == j) continue;
final other = nodes[j];
final dx = other.x - node.x;
final dy = other.y - node.y;
var distance = math.sqrt(dx * dx + dy * dy);
if (distance < distanceMin) distance = distanceMin;
if (distance > distanceMax) continue;
// Apply repulsive force
final force = strength * alpha / (distance * distance);
node.vx -= dx / distance * force;
node.vy -= dy / distance * force;
}
}
}