Visualize.Layout.Force.Forces (Visualize v0.2.35)

Copy Markdown View Source

Force functions for the force simulation.

Each force modifies node velocities based on different rules.

Summary

Functions

Applies a force to the nodes.

Center force - keeps nodes centered around a point.

Collision force - prevents nodes from overlapping.

Link force - maintains distances between connected nodes.

Many-body force - simulates gravity or electrostatic charge.

Radial force - pushes nodes toward/away from a circle.

X positioning force - pushes nodes toward an x position.

Y positioning force - pushes nodes toward a y position.

Functions

apply(force_type, nodes, links, alpha, opts)

@spec apply(atom(), [map()], [map()], float(), keyword()) :: [map()]

Applies a force to the nodes.

apply_center(nodes, alpha, opts)

Center force - keeps nodes centered around a point.

apply_collision(nodes, alpha, opts)

Collision force - prevents nodes from overlapping.

apply_link(nodes, links, alpha, opts)

Link force - maintains distances between connected nodes.

apply_many_body(nodes, alpha, opts)

Many-body force - simulates gravity or electrostatic charge.

Positive strength attracts, negative repels. Every pair is evaluated directly, O(n²) per tick; there is no Barnes-Hut approximation.

apply_radial(nodes, alpha, opts)

Radial force - pushes nodes toward/away from a circle.

apply_x(nodes, alpha, opts)

X positioning force - pushes nodes toward an x position.

apply_y(nodes, alpha, opts)

Y positioning force - pushes nodes toward a y position.