У меня странная проблема, которую я пытался решить в течение нескольких дней, и мне интересно, может ли кто-нибудь мне помочь.
У меня есть следующие данные:
- Стандартная матрица PSR (положение, масштаб и вращение)
- Исходная точка в трехмерном пространстве, определяющая начальную точку луча
- Нормальный вектор в трехмерном пространстве относительнок # 2, который определяет направление луча
- Целевая точка в трехмерном пространстве
Начало и нормаль луча могут быть расположены где угодно в трехмерном пространстве, но они должны быть привязаны к матрицеописанный в # 1 (который сам может иметь любое начальное вращение и / или положение в трехмерном пространстве).
Что мне нужно сделать, это рассчитать вращение родительской матрицы, чтобы убедиться, что источник луча и направление лучавыровнены таким образом, что луч гарантированно пересекается с целевой точкой, предпочтительно используя вектор вверх для выравнивания, если существует более одного возможного решения.
Есть ли какая-либо страта?простой способ рассчитать это?
РЕДАКТИРОВАТЬ:
Вот несколько фотографий, которые показывают именно то, что я пытаюсь сделать.Извините за путаницу!
На этом рисунке оранжевый куб представляет родительскую матрицу (без вращения), желтая сфера представляет происхождение луча, а синяя стрелка представляет направление луча.Есть также вектор вверх и точка цели.
![example_1](https://i.stack.imgur.com/Pclcv.png)
Мне нужно повернуть матрицу, к которой происхождение и направление луча связаны, так что луч направляется прямона целевом объекте, где начало луча падает на 2D-плоскость, определяемую положением родительской матрицы, целевой точкой и вектором вверх.
![example_2](https://i.stack.imgur.com/DurfX.png)
Воттретий пример, показывающий, как направление луча теперь указывает непосредственно на целевую точку.
![example_3](https://i.stack.imgur.com/RkxKz.png)
И, наконец, еще одна картина, которая примерно показывает, как нужно все этодля выравнивания с вектором вверх.
![example_4](https://i.stack.imgur.com/cE809.png)
Основная проблема здесь заключается в том, что ничто не является постоянным - смещение родительской матрицы (читай: позиция) может изменитьсяили происхождение и направление луча могут измениться.Целевая точка также будет перемещаться, как и вектор повышения, то есть мне нужно выяснить, как все выровнять, когда объекты перемещаются в трехмерном пространстве.