я в настоящее время пытается вывести полную матрицу вращения R на основе двух пар 3D векторов (V1, V1 т) и (V2, V2 т) таким образом, чтоВыведение матрица поворота 3D из двух трансформировали 3D векторов
- V1 т = R * V1
- V2 т = R * V2
- V1 и V2 выбраны ортогональными друг другу.
используются две пары векторов, так как одной пары векторов (V1 и его преобразованный вектор, V1 т) не приносит достаточно информации, чтобы построить матрицу поворота R. Хороший пример для иллюстрации того, что является например, V1, лежащей на оси вращения R.
идея заключается в том, чтобы построить два частичного поворота матриц R1 и R2, чтобы получить окончательную матрицу Р.
реализация использует GLM и R1 и R2 вычислено следующим образом:
R1 = math::mat3_cast(math::rotation(V1, V1t));
R2 = math::mat3_cast(math::rotation(V2, V2t));
Мое предположение заключается в том, что перед вычислением R вращение вдоль оси V1 должно быть изолировано от R2, давая R2 '.
R будет тогда R1 * R2 '.
Мои вопросы
- Во-первых, это жизнеспособный вывести матрицу вращения из двух пар трансформированных 3D векторов? (Два исходных вектора V1 и V2 берутся как ортогональные друг другу)
- Как извлечь поворот вдоль произвольной оси из матрицы вращения?