d3.forceLimit?
mbostock opened this issue · 0 comments
mbostock commented
A way to limit the maximum instantaneous force (speed) of nodes.
function forceLimit(limit) {
let nodes;
function force() {
for (const node of nodes) {
const speed = Math.hypot(node.vx, node.vy);
if (speed > limit) {
node.vx = node.vx / speed * limit;
node.vy = node.vy / speed * limit;
}
}
}
force.limit = function(_) {
return arguments.length ? (limit = +_, force) : limit;
};
force.initialize = function (_) {
nodes = _;
};
return force;
}
To use:
simulation.force("limit", forceLimit(8));