Вычислите высоту и азимут из CMAttitude, используя крен, тангаж и рыскание или кватернион или матрицу вращения - PullRequest
6 голосов
/ 24 апреля 2011

У меня проблема.Я хочу преобразовать информацию CMAttitude iPhone в высоту (от 0 до 90 градусов) и азимут (от 0 до 360 градусов).Я погуглил и наткнулся на некоторые темы, которые обсуждают это, но ни одна из них не дала положительного ответа, и большинство статей, в которых обсуждаются углы кватерниона и Эйлера, - это слишком много математики, чтобы врезаться в мой мозг!Есть ли материал с открытым исходным кодом, который облегчает эту задачу?Или кто-то написал код для выполнения этого преобразования?

Редактировать: Во-первых, извините за то, что вы так абстрактны!

Азимут - это направление на поверхности земли, на которое указывает устройство.Как север = 0 градусов, северо-восток = 45 градусов, восток = 90 градусов, юг = 180 градусов и так далее.Диапазон от 0 до 360 градусов:

enter image description here

Высота - это угол, под которым плоскость Земли направлена ​​к объекту в небе: enter image description here

Спасибо,

Радж

1 Ответ

4 голосов
/ 03 мая 2011

Используя CMDeviceMotion, вы можете получить объект CMAttitude с помощью «roll, pitch and yaw» - где, например, для телефона, удерживаемого в портретном режиме, «yaw» - это «азимут», «pitch» - это наклон телефона с уважение к земле, или зенит, а «крен» - это вектор, указывающий через экран, а не то, что вас интересует.

Все становится немного сложнее, потому что «азимут» - это проекция трехмерного магнитного вектора (указывающего на северный магнитный полюс) на плоскую «землю», которая меняется в зависимости от ориентации устройства, но с учетом этого понимания термины, такие как , этот должен быть гораздо более понятным. Если вам нужно, чтобы ваше приложение работало только в одной ориентации, все становится намного проще.

P.S. «высота» почти исключительно используется для обозначения высоты или высоты относительно заданного ориентира (уровень моря, геодезическая высота и т. д.). "Zenith" или "pitch" предпочтительны, и, поскольку вы работаете на iOS, вам следует придерживаться их схемы координат: (широта, долгота, альт), (высота, рыскание, крен).

...