RustGrapher
A library to simulate and visualize a force directed graph in rust.

The initial goal of this project was to render a graph of all nodes in wikipedia now it has transformed into a library for visualizing graphs.
Currently RustGrapher doesn't utilize the GPU for it's calculations but it's planned for future updates.
The library only supports 2D graphs. (For now)
Algorithms
Barnes–Hut
Barnes-Hut is a approximation algorithm for n-body simulation.
The force directed graph calculates for each node the repulsive force to other nodes which will lead to a complexity of $O(n^2)$.
Using a k-d Tree(Quadtree) the Barnes-Hut algorithm groups far away nodes and only calculates the repulsive force once.This results in a complexity of $O(nlogn)$.
Performance
[!TIP] Run the project with
--releasefor the best performance(~10x).
On a Ryzen 7 3700X the library can calculate 2000 simulation steps per second at 1000 Nodes. (Using 16 Physics threads)
Controls
return- Centers the camera on the average poisson of all nodes.Space- Start/Pause simulationScroll Wheel- Zoom in or outW,A,SandD- to move the camera
Usage
// Build a PetGraph
let mut rng = thread_rng;
let graph: Graph =
barabasi_albert_graph;
// Configure the simulator
let simulator = new
.delta_time
.freeze_threshold
.build;
// Start the renderer
let renderer = new;
renderer.create_window;