Это может быть трудно объяснить геометрию, поэтому я буду осторожен при ее написании. Это видно в стандартном приложении compas и из данных в CLLocationManager.
1) Держа телефон в портретной ориентации, считайте, что угол наклона равен 0 °.
2) При наведении камеры вверх в небо (например, при фотографировании облака) угол наклона изменяется от 0 ° -> 90 °, где 90 градусов направлены вверх.
3) когда телефон наклонен вверх (> 0 градусов и вращается по оси магнитометра «X») и когда телефон находится под углом примерно (но не точно) 45 градусов, направление компаса поворачивается на 180 градусов. Таким образом, пока камера все еще находится в точке «N», компас сообщит «S».
4) для следующих (примерно) 90 градусов направление по компасу поворачивается на 180 градусов.
Это вращение курса губительно для меня, и оно не идеально совпадает с показаниями акселерометров. Есть ли хороший учебник (я не нашел его сразу) по использованию данных RAW (X, Y, Z) из данных CLHeading для расчета данных заголовка?
Конечный результат - мне нужен заголовок компас, чтобы всегда соответствовать направлению камеры.