#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