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

#computational-geometry #linear-algebra

#вычислительная геометрия #линейная алгебра

Вопрос:

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

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

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

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

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

Ответ №1:

На чертеже выглядит так, как будто положение точки на сфере задается формой сферических координат. Пусть 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) , координаты (как в ответе 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 это связано с точками треугольника, то на вопрос невозможно ответить.

Комментарии:

1. Это почти то, что я ищу, за исключением того, что синий треугольник не обязательно должен быть параллелен плоскости XY, XZ или YZ. У нас задано только 3 точки (синие точки). Ничего больше;-(т. е. i.imgur.com/iwrbU.png

Ответ №2:

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

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