This project demonstrates a basic force-directed graph drawing technique used on graphs generated using a preferential attachment process. A Barnes-Hut quadtree is used to reduce the complexity of every step from O(n^2) to O(n*log(n)) and multithreading speeds everything up.
A basic UI allows the user to define
nthe number of nodeska,kr, andknattraction, repulsion, and general constantsmaxItersandminErrorhalting conditionsupdateEveryto control how often the UI updatesthetain the range [0, 1) indicates the tradeoff between accuracy (0) and speed (1)numThreadsthe number of threads
This is nowhere near as good as state-of-the-art, but it is still fun to see how changing the number of nodes, threads, and value of theta affects performance.
$ cd server
$ go run main.go
install dependencies
$ cd ui
$ npm install
launch ui
$ npm run start
