Hey guys, it’s been a very long long long time since the last update, I was very unmotivated about rebuilding all the core 3D drawing program in OpenGL, even having a few exciting new ideas to test.
In the beginning my algorithm was placing most of the nodes following a pattern and then trying to solve the remaining connections by placing a huge amount of new empty nodes (without components), using this strategy probably I never will be able to get a good solution.
The new idea that I had back then was to evolve the 3D shape of the graph using a force-driven drawing algorithm, in this way we could start fitting the graph to our chosen 3D lattice pattern (the grid). I searched for some project that could draw graphs in 3D and I found one promising project by [Mark] (aka pachacamac in GitHub) called jg3d (https://github.com/pachacamac/jg3d), I played with it for some time and ended up adding it to Pyrite as a module called Newton (https://github.com/anderson-/Newton). It was a good tool to visualize the graphs and faster and much more reliable than the current one based on Processing.
So a few months ago I started to improve the user interface of jg3d to fit better the purpose of folding graphs just for fun, only manually this time. Then I realize that using OpenGL was the way to go and started to develop a new monitor using LWJGL. After this I ended up creating a new graph folder from scratch only to test some algorithms. I had to move from LWJGL to JOGL because I wanted to be able to have multiple OpenGL panels and also swing integration.
After tuning the new algorithms I finally could fold a graph (36 nodes and 74 edges) with up to 97% of satisfied connections without adding any new nodes, something that I found really remarkable if you look back to the beginning of the project. Now I still have a plenty of tests to do and new ideas to try, I’ll try to keep you guys updated. I still have to clean up the code, add it to Pyrite but I plan to release a major update in a month or so.
This week I’ll post a new video showing the progress that I made, but if you can’t wait here is a preview of one run of the program
The red edges of the graph turn green when it connection is satisfied (is fitted to the lattice/grid). Sorry for the spinning speed and the poor quality... The next video will be better.