Учитывая две точки в 3D-пространстве, A и B, я получаю линейный отрезок LS. Учитывая две новые точки A 'и B', дающие линейный отрезок LS ', мне нужно найти матрицу преобразования, которая преобразует LS в LS'. Длина отрезков линии считается равной.Как найти матрицу преобразования, совмещающую две строки?
У меня есть теория о том, как вычислить матрицу, но мне бы очень хотелось, чтобы некоторые отзывы от вас были отличными людьми о том, является ли это хорошей теорией или существует какой-то лучший подход.
Вот мой алгоритм:
- Пусть L и L 'быть прямые, параллельные LS и LS'
- Найти точку P, где L пересекает L»
- Найти угол V между L и L»
В последней матрица преобразования будет:
перевод (-P) * поворот (В) * перевод (р)
Некоторые предпосылки для любопытных: Я строю это в XNA, хотя математическая проблема должна быть довольно общей. Линейный сегмент является частью более крупной структуры связанных сегментов. Для каждого сегмента я предварительно вычислил матрицу преобразования на анимационный кадр.
Эти линии всегда пересекаются? – tafa
@tafa: нет, спасибо, что указали это. Я не могу гарантировать, что, на самом деле, очень вероятно, подумайте об этом, что при некоторых обстоятельствах они будут параллельны. –