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