Как определить координаты точки полусферы x-y-z? - PullRequest
3 голосов
/ 24 мая 2011

У меня серьезные проблемы с решением проблемы, показанной на картинке ниже. Допустим, у нас есть 3 точки в трехмерном пространстве (синие точки) и некоторый центр треугольника на их основе (красная точка - точка P). У нас также есть нормаль к этому треугольнику, так что мы знаем, о каком полупространстве мы говорим.

Мне нужно определить, каково положение в точке (красная точка), которая зависит от двух углов, оба в диапазоне 0-180 градусов. Неважно, как «закреплены» угол альфа = 0 и бетха = 0, важно иметь возможность сканировать всю полусферу (радиусом r).

http://i.stack.imgur.com/a1h1B.png

Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

С уважением, Рав

Ответы [ 2 ]

1 голос
/ 24 мая 2011

На рисунке это выглядит так, как будто положение точки на сфере имеет вид сферические координаты . Пусть r - радиус сферы; пусть alpha задано относительно оси x; и пусть beta будет углом относительно плоскости x-y. Декартовы координаты точки на сфере:

x = r * cos(beta) * cos(alpha)
y = r * cos(beta) * sin(alpha)
z = r * sin(beta)

Редактировать

Но для общей системы координат с осями (L, M, N) с центром в (X, Y, Z) координаты (как в ответе Дюмира):

(x, y, z) = 
   (X, Y, Z) 
   + r * cos(beta) * cos(alpha) * L 
   + r * cos(beta) * sin(alpha) * M 
   + r * sin(beta) * N

Оси L и N должны быть ортогональны и M = cross(N, L). alpha дано относительно L, а beta дано относительно плоскости L - M. Если вы не знаете, как L связано с точками треугольника, тогда на вопрос нельзя ответить.

0 голосов
/ 24 мая 2011

Вам нужно найти два ортогональных вектора единичной длины, скажем, M в плоскости треугольника, а также нормаль к единице N. Точки на сфере:

r * cos (бета) * cos (альфа) * ​​L + r * cos (бета) * sin (альфа) * ​​M + r * sin (бета) * N

...