OpenGL Control
Just as the title states this PR implements control options for the OpenGL layer.
The features implemented are:
- Scaling the model view matrix (zooming)
- Translating the model view matrix (panning)
- Transforming coordinates (mapping true canvas coordinates to the imaginary OpenGL coordinate system)
Zooming and panning are the main features for this PR. However since we will need it anyway I have also implemented an event handler for clicks and the transform method to map them to OpenGL space. All that's left now is to pass this to the visualisations so that they can handle the event.
Since every PR needs at least one screenshot:
Overall OpenGL performance should be negligibly better after this PR. Performance while panning/zooming is quite good. On my desktop no noticable delay is visible, on the TU/e laptop the visualisation takes a few milliseconds to catch up. Performance with the generalized pythagoras tree and the NCBI dataset on my desktop is okayish. Zooming and panning can be done in under 10 seconds, but it doesn't make for a great user experience.
fixes #36 (closed) fixes #37 (closed)
Also, free Linear Algebra practise for anyone reviewing this ^^