Учитывая две точки в трехмерном пространстве, A и B, я получаю отрезок прямой линии LS. Учитывая две новые точки A 'и B', дающие отрезок линии LS ', мне нужно найти матрицу преобразования, которая преобразует LS в LS'. Длина отрезков считается равной.
У меня есть теория о том, как рассчитать матрицу, но мне бы очень хотелось, чтобы вы, ребята, высказали свое мнение о том, является ли она хорошей теорией или существует какой-то лучший подход.
Вот мой алгоритм:
- Пусть L и L '- линии, параллельные LS и LS'
- Найдите точку P, где L пересекается с L '
- Найти угол V между L и L '
Окончательная матрица преобразования будет:
перевод (-P) * поворот (V) * перевод (р)
Некоторые предпосылки для любопытных: я строю это в XNA, хотя математическая задача должна быть довольно общей. Сегмент линии является частью большей структуры соединенных сегментов. Для каждого сегмента я предварительно вычислю матрицу преобразования для каждого кадра анимации.