The axes are continuous under transformation:
Drag points A, B. The vector u1 will not flip from side to side, but changes smoothly.
When is this condition violated?
The axes moves briskly when the figure approaches a circle. And in fact this transformation is undefined for |a| = |b|. For example, try typing
SetValue[A, O + prp (B-O)].
(I use a matrix to rotate vectors 90° counterclockwise. )
Slumberland will address this shortly. To preserve continuity, there is a correct answer: preserve the last good directions of u1, u2, whenever the transformation is undefined. If continuity does not matter, the choice may be arbitrary.
Is that all?
No. I say, we can still bring about an instantaneous rotation of the axes by 90°. How?
In context, this may or may not be descriptive of the problem.
Time to define the limit cases.