Как спроецировать точку на сферу

Если у меня есть точка (x, y, z), как спроецировать ее на сферу (x0, y0, z0, радиус) (на ее поверхности). Моим вводом будут координаты точки и сферы. На выходе должны быть координаты спроецированной точки на сфере.

Просто преобразовать декартовы координаты в сферические?


person George    schedule 07.03.2012    source источник
comment
Как вы спроецируете суть? Соединение точки и центра сферы? Параллельно какой-то оси? Какая-то другая проекция? Также являются ли (x, y, z) точки и центра сферы одинаковыми значениями или вы просто использовали одни и те же имена переменных?   -  person Ivaylo Strandjev    schedule 07.03.2012


Ответы (3)


Для простейшей проекции (по линии, соединяющей точку с центром сферы):

  1. Запишите точку в системе координат с центром в центре сферы (x0,y0,z0):

    P = (x',y',z') = (x - x0, y - y0, z - z0)

  2. Вычислите длину этого вектора:

    |П| = sqrt(x'^2 + y'^2 + z'^2)

  3. Масштабируйте вектор так, чтобы его длина равнялась радиусу сферы:

    Q = (радиус/|P|)*P

  4. И вернитесь к исходной системе координат, чтобы получить проекцию:

    R = Q + (x0,y0,z0)

person Stephen Canon    schedule 07.03.2012
comment
@George Чтобы поместить точку прямо на поверхность сферы с величиной, равной радиусу - person Adam Erickson; 13.12.2015

В основном вы хотите построить линию, проходящую через центр сферы и точку. Затем вы пересекаете эту линию со сферой, и у вас есть точка проекции.

Подробнее:

Пусть p будет точкой, s центром сферы и r радиусом, затем x = s + r*(p-s)/(norm(p-s)), где x будет точкой, которую вы ищете. Реализация остается за вами.

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

person Azrael3000    schedule 07.03.2012

Это работает, если вы установите координаты центра сферы в качестве начала системы (x0, y0, z0). Таким образом, у вас будут координаты точки, относящиеся к этому началу координат (Xp', Yp', Zp'), и, преобразуя координаты в полярные, вы отбрасываете радиус (расстояние между центром сферы и точкой) и углы будет определять проекцию.

person clabacchio    schedule 07.03.2012