Расчёт углов поворота между двумя системами координат
Есть ортогональная трёхмерная система координат (OXYZ). Есть другая ортогональная система координат (OX`Y`Z`), повёрнутая относительно первой на неизвестные углы. Центры систем координат совпадают. В системе координат (OXYZ) мы знаем координаты вектора OX` и вектора OZ`. Необходимо найти матрицу поворота для перехода из системы координат (OXYZ) в (OX`Y`Z`). Помогайте, а то весь мозг себе сломал. Или подскажите в какую сторону копать.
Но всё равно спаибо, можно попробовать посчитать координаты третей оси, так как решение с поворотами до совмещение осей дало громадную результирующую матрицу поворота.
по идее если по матрице перехода пересчитать допустим ось OX то она должна совпасть с осью OX'. как это сделать без поворота вокруг оси OZ я не представляю. В моём понимании должно быть как минимум 3 поворота.
Хорошо, вот только не понял углы поворота фи и пси между чем и чем? Лично мне их найти не так элементарно как вам и я не понимаю что за формулу вы дали.
Угол фи, это угол между векторами OX и OX`, угол пси это угол между OY и OY`. Что бы их найти нужно подставить соответствующие векторы в формулу и вычислить арккосинус от того, что получится.
теперь понятно. Вот только всё же в первом сообщении вы пишете о повороте вокруг оси X и Y. А если угол фи это угол между векторами OX и OX` то вращать нам надо всё же вокруг OY' для совмещения OX и OX`. Обозначим эту новую повёрнутую систему как OX«Y»Z". для совмещения осей OY и OY" расчитываем угол между ними и поворачиваем вокруг оси OX", она же OX'. Так?
Поворачиваем систему координат сперва так, чтобы совпал OX' с OX, при этом OY' переходит в, скажем, OY''. Потом повернутую систему поворачиваем второй раз (вокруг OX') чтобы OY'' совпал с OY. (При первом повороте ось вращения получим как векторное произведение OX' и OX, а угол поворота — в обоих случаях — через скалярное, формулу уже привели выше.) Оба поворота выразим кватернионами, и потом из их композиции и получим и ось, и угол.
так как мы рассчитываем переход из системы OXYZ к OX'Y'Z' то соответственно предлагаю доворачивать OXYZ до OX'Y'Z' а не наоборот. Итак вначале по формуле рассчитываем угол между OX и OX' и поворочиваетм по оси OY'. при этом у нас совпадут OX' и OX Повёрнутую систему обзовём OX«Y»Z". Теперь чтобы совместить OY' и OY" находим между ними угол и поворачиваем вдоль оси OX", он же OX'. Так?
Да, верно — второй поворот делать вокруг того вектора, который уже совмещен. Но чтобы совместить его первым поворотом, векторное произведение посчитать, в общем случае, всё же нужно. И использовать это векторное произведение как ось вращения для первого поворота. Разве что, по условиям задачи, OY' — это нормаль к плоскости XOX'?
P.S.: Случайно изменил обозначения по сравнению с теми, что были в вопросе. В вопросе — векторы OX' и OZ', а у меня — OX' и OY'.
Точно строками? Предположим что новая система координат отличается от старой только поворотом вокруг оси y на 45 градусов. тогда если верить вашим словам матрица поворота примет вид:
0.7, 0, 0.7
0, 0, 0
-0.7, 0, 0.7
умножим на эту матрицу вектор OX
1
0
0
и получим вектор с координатами 0.7, 0, -0.7. А должны были 0.7, 0, 0.7.
Значит, столбцами — зависит от формы записи. Мне приходилось иметь дело с обоими вариантами, так что сразу не сориентировался, что требуется для классического варианта. Кстати, второй вектор будет всё же (0, 1, 0).