Углы Эйлера для ручного преобразования матрицы вращения для устройств iOSIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Углы Эйлера для ручного преобразования матрицы вращения для устройств iOS

Сообщение Anonymous »

Это небольшая предыстория и введение в проблему:
У меня есть некоторые функции в моем iOS-приложении, основанном на движении и местоположении, которому в качестве входных данных требуется матрица вращения. Некоторый графический вывод зависит от этой матрицы. При каждом движении устройства графический вывод меняется. Это часть кода, которая делает это:

Код: Выделить всё

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical
toQueue:motionQueue
withHandler:
^(CMDeviceMotion* motion, NSError* error){
//get and process matrix data
}
В этой структуре доступны только 4 кадра:
XArbitraryZVertical
XArbitraryCorrectedZVertical
XMagneticNorthZVertical
XTrueNorthZVertical
Мне нужна еще одна ссылка, например. значение гироскопа вместо севера, и эти кадры не могут предложить мне именно то, что я хочу.
Чтобы достичь своей цели, я использую следующую структуру:

Код: Выделить всё

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical
toQueue:motionQueue
withHandler:
^(CMDeviceMotion* motion, NSError* error){
//get Euler angles and transform it to rotation matrix
}
Вы можете спросить меня, почему я не использую встроенную матрицу вращения? Ответ прост. Мне нужно создать какую-то собственную систему отсчета, и я могу сделать это, поместив внутрь измененные значения углов.
Проблема:
По порядку чтобы получить матрицу вращения из углов Эйлера, нам нужно составить матрицу для каждого угла и после этого умножить их. В случае 3D у нас будет матрица для каждой оси (их 3). После этого перемножаем матрицы. Проблема в том, что результат зависит от порядка умножения. XYZ не равен ZYX. Википедия сообщает мне, что существует 12 вариантов, и я не знаю, какой из них подходит для реализации iOS. Мне нужно знать, в каком порядке мне нужно их умножать. Кроме того, мне нужно знать, какие углы обозначают X, Y, Z. Например, X — крен, Y — шаг, Z — рыскание.
Вообще-то эту проблему решила Apple. лет назад, но у меня нет доступа к .m-файлам и я не знаю, какой порядок умножения является правильным для устройства iOS.
Похожий вопрос был опубликован здесь, но порядок из этого математического примера решение у меня не работает.

Подробнее здесь: https://stackoverflow.com/questions/401 ... os-devices
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Углы Эйлера для ручного преобразования матрицы вращения для устройств iOS
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Углы Эйлера для ручного преобразования матрицы вращения для устройств iOS
    Anonymous » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать углы вращения и углы Эйлера в SceneKit
    Anonymous » » в форуме IOS
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать углы вращения и углы Эйлера в SceneKit
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как я могу преобразовать углы Эйлера в кватернион и извлечь их?
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»