Over the holidays, my course set some work: an introduction to c++ via a physics simulator.
The main idea is that you have a simple OpenGL library which renders a short, conical “lander” above a large, red sphere, “mars.” The student’s task is to write two functions: a numerical integrator in three dimensions for vector force, velocity, and positional calculations; and an autopilot system that employs basic proportional control to land their lander from 200km and 10km stationary drops over the surface of mars.
It was a thoroughly enjoyable task which included some very useful documentation (when I eventually read it, half way through the final task….) and a plethora of extension tasks for those who are keen and didn’t start the project two weeks before the start of term.
I shan’t post any of my source code to avoid being done for plagiarism by the university but think these graphs of my autopilot function at work from 10km are sufficiently innocent.
Throughout this coursework, I have been learning to use vim. This is a text editor with a twist: no mouse; no traditional GUI. Instead, it has “modes” such as “DEFAULT” where you can navigate and perform some optimised actions via keyboard shortcuts as well as run plugins or write out the file. “INSERT” allows for use like a normal text editor with arrow key navigation and standard text input.
Additionally, there are plugins for practically everything. With the right configuration, it can behave just like any other IDE with syntax colouring, code folding, multi-file support with cross-file word highlighting, and debug integration from GDM (which I still haven’t even started to look into but appears to be quite powerful).