Checkpoint on the triad polar handling changes.

Task @T94 : This is much better, but is still failing one case for
some strange reason. Starting with cartesian (1,1,1), (1,0,1) and
(1,1,0) all work, but (0,1,1) fails when converted to polar and back
out. The polar values look good, but to_cartesian() is failing to get
back properly. More remains, obviously.