Отношение iOS CoreMotion относительно системы координат iPhone - PullRequest
0 голосов
/ 21 ноября 2018

Я тщательно исследовал эту тему, здесь, в стеке и по всему Интернету, и я не могу найти решение.Много людей в стеке задавали подобные вопросы, и люди давали ответы, но я не думаю, что кто-то еще дал хорошее решение.

Проблема: При использовании CoreMotion для сообщения об отношенииВсе 4 варианта системы отсчета, которые они предоставляют, имеют ось Z, ориентированную напротив силы тяжести (по вертикали).Приложение, которое я разрабатываю, должно использовать данные поворота относительно системы координат телефона, как определено на фотографии здесь: Системы координат

Как, я надеюсь, будет работать решение: первое чтениемогут быть использованы для установления телефонной системы отсчета, так как это даст нам вращение от яблок отсчета к телефонной системе отсчета.Все последующие показания поворота можно затем рассчитать с помощью преобразования, чтобы сообщаемое отношение относилось к новой системе отсчета.

Примечание 1: Мне известны проблемы с использованием ЭйлераУглы (блокировка карданного подвеса, а также упорядочение) и как таковые хотели бы избегать их использования.

Примечание 2: Было бы предпочтительным решение с использованием кватернионов, но решение с использованием матрицы вращениятакже будет работать.

Примечание 3: Многие люди предлагали в других постах использовать multiplyByInverseOfAttitude, как показано в примере с яблоком здесь: (* https://developer.apple.com/documentation/coremotion/getting_processed_device-motion_data/understanding_reference_frames_and_device_attitude). Однако это, кажется, только для сброса ваших первых показаний на0, но все равно сообщает все последующие показания относительно стандартной системы отсчета яблок.

...