Задачка по созданию программы управления вращением шара.
Имеется шар радиусом R и координатами центра

,

,

. Область видимости представляет собой пирамиду. В каждом сечении пирамиды прямоугольник с соотношением сторон равным соотношению ширины и высоты экрана. Система координат расположена в вершине пирамиды: ось

вправо, ось

вверх, ось

на нас. Имеются относительные координаты курсора

и

, абсолютную координату из относительных можно получить умножив на

, где

- это расстояние от вершины пирамиды до рассматриваемого сечения. Нужно обеспечить управление положением шара таким образом чтобы курсор находясь над шаром заставлял точку на шаре следовать за ним, а вне шара заставлять вращаться вокруг оси направленной на наблюдателя. математически из координат курсора нужно получить вектор координаты начала которого совпадают с центром шара

,

,

, а координаты конца либо лежат на поверхности шара либо на поверхности конуса проходящего через крайние точки видимого диска шара.
первую часть решил:

где

- искомая координата вектора (относительно центра шара),
оставшиеся координаты вычисляются относительно

:


Помогите разобраться со второй частью задачи: в каком виде удобнее записать уравнение для вектора на чем построить логику расчёта координат?