On Sunday I have added the code to limit vertices to one half of the plane (so they can't cross the axis of rotation). I also started on the stuff to limit the movements of vertices to multiples of an angle. Most of the time I spent on adding UI stuff to the program, I want to only see some fixed values and don't want to allow arbitrary angles.
But now that I have finished that stuff, I am not sure how to continue. I never draw new vertices (they are created by splitting an edge in two parts), I only move existing ones and it is not clear to which of the (normally) two lines to apply the angle. I can't apply it to both, as that would limit the possible positions to two (and in many cases one). So I need to select the line and only one vertex, but selecting the line automatically selects the vertices. Perhaps I will change the code so it is easier to use this feature (e.g. optionally disable automatically selecting the vertices with the selection of an edge).