Наведение трехмерного луча в пространстве на конкретную цель путем вращения родительской матрицы - PullRequest
0 голосов
/ 17 октября 2018

У меня странная проблема, которую я пытался решить в течение нескольких дней, и мне интересно, может ли кто-нибудь мне помочь.

У меня есть следующие данные:

  1. Стандартная матрица PSR (положение, масштаб и вращение)
  2. Исходная точка в трехмерном пространстве, определяющая начальную точку луча
  3. Нормальный вектор в трехмерном пространстве относительнок # 2, который определяет направление луча
  4. Целевая точка в трехмерном пространстве

Начало и нормаль луча могут быть расположены где угодно в трехмерном пространстве, но они должны быть привязаны к матрицеописанный в # 1 (который сам может иметь любое начальное вращение и / или положение в трехмерном пространстве).

Что мне нужно сделать, это рассчитать вращение родительской матрицы, чтобы убедиться, что источник луча и направление лучавыровнены таким образом, что луч гарантированно пересекается с целевой точкой, предпочтительно используя вектор вверх для выравнивания, если существует более одного возможного решения.

Есть ли какая-либо страта?простой способ рассчитать это?

РЕДАКТИРОВАТЬ:

Вот несколько фотографий, которые показывают именно то, что я пытаюсь сделать.Извините за путаницу!

На этом рисунке оранжевый куб представляет родительскую матрицу (без вращения), желтая сфера представляет происхождение луча, а синяя стрелка представляет направление луча.Есть также вектор вверх и точка цели.

example_1

Мне нужно повернуть матрицу, к которой происхождение и направление луча связаны, так что луч направляется прямона целевом объекте, где начало луча падает на 2D-плоскость, определяемую положением родительской матрицы, целевой точкой и вектором вверх.

example_2

Воттретий пример, показывающий, как направление луча теперь указывает непосредственно на целевую точку.

example_3

И, наконец, еще одна картина, которая примерно показывает, как нужно все этодля выравнивания с вектором вверх.

example_4

Основная проблема здесь заключается в том, что ничто не является постоянным - смещение родительской матрицы (читай: позиция) может изменитьсяили происхождение и направление луча могут измениться.Целевая точка также будет перемещаться, как и вектор повышения, то есть мне нужно выяснить, как все выровнять, когда объекты перемещаются в трехмерном пространстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...