При использовании CMDevicemotion, если устройство прямо вверх (Pitch= 90), это действительно нестабильно.Во всяком случае, чтобы решить это?

StackOverflow https://stackoverflow.com//questions/10665306

  •  11-12-2019
  •  | 
  •  

Вопрос

Я знаю, что система координат (Pitch, Yaw, Roll) имеет свой собственный дефектный математический мудрый. Однако я действительно надеюсь что-то вместо этого или полученное из этой координаты, может быть альтернативой.

Что я пытаюсь сделать, это перемещать устройство (скажем, это iPhone) в реальном мире и пытаясь выяснить рыскание и высоту в отношении глаз пользователя. Таким образом, диапазон рыскания должен быть (-180, 180) и диапазон шага должен быть (-90, 90). Пока я двигаю iPhone (всегда лицом к мне) снизу вперед, Cmdevicemotion дает мне изменение шага от 0 до 90, и пока я перемещаю iPhone (все еще сталкиваясь со мной) с фронта, Cmdevicemotion дает мне изменения в шаге с 90 назад До 0. Это хорошо, и я совершенно доволен данными для подачи.

Однако, когда шаг близко к 90, рысь очень шаткий и нестабильный. Воля, это не проблема, потому что я могу игнорировать изменения на рысь, когда шаг составляет около 90. Однако реальная проблема состоит в том, что значение яута значительно изменится до увеличения высоты тона, а после увеличения шага. Я имею в виду, что это не только шатки, но и средние изменения! меняет что-то вроде 180 (PI). Я думаю, это потому, что координата полностью изменяется. Но я потерян на координате, передаваю сейчас.

Это было полезно?

Решение

Этот грязный обходной путь, который вы только что описали, является точно причина, по которой вы не должны использовать рулон, шаг и рысь.

Вы либо отправляетесь на эту дорогу дальше и сделаете беспорядок больше или Использовать матрицы вращения или кватернионы .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top