Thought about this when discussing #125 - could be useful to have versions of Direction3d.orthonormalize and Direction3d.orthogonalize that take two vectors/directions instead of three, and use a cross product to construct a (right-handed) perpendicular direction.