calculateAttraction method
void
calculateAttraction(
- List<Edge> edges
)
Implementation
void calculateAttraction(List<Edge> edges) {
edges.forEach((edge) {
var source = edge.source;
var destination = edge.destination;
var delta = source.position - destination.position;
var deltaDistance = max(EPSILON, delta.distance);
var maxAttractionDistance = min(graphWidth * attractionPercentage, graphHeight * attractionPercentage);
var attractionForce = min(0, (maxAttractionDistance - deltaDistance)).abs() / (maxAttractionDistance * 2);
var attractionVector = delta * attractionForce * attractionRate;
displacement[source] = displacement[source]! - attractionVector;
displacement[destination] = displacement[destination]! + attractionVector;
});
}