Podstawowa pozycja CoreLocation na tylnej kamerze (rzeczywistość rozszerzona)

Chciałbym stworzyć widok rzeczywistości rozszerzonej, który będzie wskazywał obiekt w kierunku. Jednak pozycja CoreLocation nie działa poprawnie, gdy kamera jest skierowana do góry (powiedzmy na szczycie 20-piętrowego budynku, gdy znajdujesz się na parterze).

Daje przeciwny kierunek (prawdopodobnie kierunek wskazywany przez górną część telefonu).

Próbowałem kilku metod, aby działał zgodnie z kierunkiem wskazywanym przez kamerę, na przykład:

1, +180 stopni, gdy orientacja urządzenia jest> 45 stopni (niedokładna, nagle kierunek gaśnie o 10 ~ 20 stopni)

2, próbował obliczyć za pomocą CMMotionManager z formułą z poniższego samouczka.http://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial.

3, próbował symulować logikę z Androida za pomocą ios deviceMotion.magneticField i deviceMotion.gravity.

4, użyj macierzy rotacji (jakiś inny post w przepełnieniu stosu, ale niedokładny)

    double heading = M_PI + atan2(self.altitudeData.rotationMatrix.m22, self.altitudeData.rotationMatrix.m12);
    heading = heading*180/M_PI;

Skończyło mi się pojęcie, co jeszcze mógłbym spróbować zrobić dobrze. Wiem, że jest tam kilka aplikacji (pewna aplikacja, która widzi słońce i gwiazdę), która robi to poprawnie.

questionAnswers(2)

yourAnswerToTheQuestion