Как определить координаты x-y-z точки полусферы?

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

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

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

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

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


person emesx    schedule 24.05.2011    source источник


Ответы (2)


Из рисунка видно, что положение точки на сфере задано формой сферических координат. Пусть r будет радиусом сферы; пусть alpha задано относительно оси x; и пусть beta будет углом относительно плоскости xy. Декартовы координаты точки на сфере:

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

Изменить

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

(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 связано с точками треугольника, то на вопрос нельзя ответить.

person antonakos    schedule 24.05.2011

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

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

person dmuir    schedule 24.05.2011