The next little feature of the rotational constructor is in the program. The constraint to an angle is working. It was a bit harder than anticipated as I found out, that I didn't have a clear idea how it was supposed to work. What I ended up with was to calculate the angle of the line after the current movement was done, calculate the nearest allowed angle, then project the moved point onto a line through the fixed point and parallel to the new direction. It is necessary to store the difference between the movement done by the user and the resulting movement. This last vector accumulates the movements orthogonal to the current target direction and will eventually change the target direction. This vector is simply added to the movement at the next loop through the algorithm.
I also have started with the last addition I plan to make, the grid. The variables to define the grid are in the UI (and are stored and loaded) and I have added a new function interface to have the grid drawn, drawing is what I plan to implement next, it should be fairly easy. Then I have to add the code to actually constrain the movements. I don't know yet what will take precedence when both the angular and grid constraint are used. So I hope I will finish this thing this week end.