Как найти матрицу преобразования, выравнивая две линии? - PullRequest
0 голосов
/ 05 марта 2010

Учитывая две точки в трехмерном пространстве, A и B, я получаю отрезок прямой линии LS. Учитывая две новые точки A 'и B', дающие отрезок линии LS ', мне нужно найти матрицу преобразования, которая преобразует LS в LS'. Длина отрезков считается равной.

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

Вот мой алгоритм:

  1. Пусть L и L '- линии, параллельные LS и LS'
  2. Найдите точку P, где L пересекается с L '
  3. Найти угол V между L и L '
  4. Окончательная матрица преобразования будет:

    перевод (-P) * поворот (V) * перевод (р)

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

1 Ответ

2 голосов
/ 05 марта 2010

Вместо нахождения пересечения, я полагаю, будет достаточно транслирования от A до A '. Тогда вам, вероятно, потребуется 2 поворота: одно, чтобы обе линии были на одной плоскости, а другое - чтобы выровнять их.

...