База курсора CoreLocation на задней камере (дополненная реальность)
Я хотел бы создать представление дополненной реальности, которое будет указывать объект в направлении. Тем не менее, заголовок CoreLocation не работает должным образом, когда вы обращаете камеру вверх (например, на вершину 20-этажного здания, когда вы находитесь на первом этаже).
Это дает противоположное направление (вероятно, направление, которое указывает на верхней части телефона).
Я попробовал несколько методов, чтобы заставить его работать в направлении, указанном камерой, например:
1, +180 градусов, когда ориентация устройства> 45 градусов (не достаточно точно, внезапно направление отклоняется на 10 ~ 20 градусов)
2, попытался рассчитать, используя CMMotionManager с формулой из учебника ниже.http://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial.
3, попытался смоделировать логику с Android с помощью ios deviceMotion.magnField и deviceMotion.gravity.
4, используйте матрицу вращения (какой-то другой пост в переполнении стека, но не точный)
double heading = M_PI + atan2(self.altitudeData.rotationMatrix.m22, self.altitudeData.rotationMatrix.m12);
heading = heading*180/M_PI;
У меня заканчиваются идеи, что еще я могу попытаться сделать правильно. Я знаю, что есть некоторые приложения (некоторые, которые могут видеть солнце и звезду), которые делают это правильно.