У вас уже есть 2 вектора:
N = (0,0,1) точек прямо от начала координат.
P = (a, b, c) указывает от начала координат до вашей точки.
Рассчитайте единичный вектор до вашей точки
U = P / | P |
Рассчитать единичный вектор перпендикулярно U и N
E = U X N
Рассчитать единичный вектор, перпендикулярный U и E (это будет касаться сферы)
T = U X E
Т может указывать либо на север, либо на юг, поэтому
если T.z <0, умножить T на -1. </p>
T теперь указывает на север и параллельна плоскости, касательной к сфере в точке P.
Теперь у вас достаточно информации для построения матрицы вращения (R), чтобы вы могли вращать T вокруг U. Вы можете найти, как создать матрицу для вращения вокруг любой оси в wikipedia :
Используя R, вы можете вычислить вектор, указывающий направление движения.
A = RT
A - это ответ, который вы ищете.