docs: def orthogonal_basis(self):
          """Return an orthogonal basis to this direction.
  
          Note
          ----
              Only implemented in 3D.
  
          Returns
          -------
          :obj:`tuple` of :obj:`Direction`
              The pair of normalized Direction vectors that form a basis of
              this direction's orthogonal complement.
  
          Raises
          ------
          NotImplementedError
              If the vector is not 3D
          """
          if self.dim == 3:
              x_arr = np.array([-self.data[1], self.data[0], 0])
              if np.linalg.norm(x_arr) == 0:
                  x_arr = np.array([self.data[2], 0, 0])
              x_arr = x_arr / np.linalg.norm(x_arr)
              y_arr = np.cross(self.data, x_arr)
              return Direction(x_arr, frame=self.frame), Direction(y_arr, frame=self.frame)
          raise NotImplementedError('Orthogonal basis only supported for 3 dimensions')