Взаимной однозначности не нужно, нужна сюръекция (по точке сферы и углу непрерывно находим поворот). Я пытаюсь по кватернионам как-то сделать. Точку

зафиксируем, пусть это будет кватернион

. Точка

задаётся единичным кватернионом

где

чисто мнимый кватернион нормы единица. По кватерниону надо непрерывно находить поворот, переводящий

в

(при условии

). Идеально сам поворот находить в виде кватерниона.
А почему не воспользоваться стандартной формулой
вращения на единичный кватернион? В этом случае векторный кватернион

(в обозначениях статьи из вики) будет функцией исходного векторного кватерниона

, единичного векторного кватерниона

, задающего направление оси вращения (которая должна проходить через центр сферы), и угла поворота

. Вращение будет происходить в плоскости, ортогональной оси вращения и содержащей точки A и B (эти точки будут принадлежать окружности, образованной сечением сферы плоскостью). Если значения

и

(или, эквивалентно, точки A и B) фиксированы, то предпоследнее равенство в разделе "Вращение на единичный кватернион" дает (при фиксированном

) значение угла

, соответствующее кватерниону

. Здесь вектор

равен нормализованной на 1 (произвольной) линейной комбинации векторов

и

, а сам поворот (при выбранном значении

) будет определяться функцией

, где

.