Я сейчас нахожусь в процессе выяснения этого, но кажется, что математика зависит от того, где вы и ваша цель на земле относительно истинного и магнитного севера.Например:
float thetaMeThem = 0.0;
if (myLocation.bearingTo(targetLocation) > myLocation.getBearing()){
thetaMeThem = myLocation.bearingTo(targetLocation) - azimuth + declination;}
См. Sensor.TYPE_ORIENTATION для определения азимута.
См. GetDeclination () для определения склонения
Это предполагает, что склонение отрицательное (запад от истинного севера) и их отношение> yourBearing.
Если склонение положительное, а yourBearing> ихBearing, другой вариант:
float thetaMeThem = 0.0;
if (myLocation.bearingTo(targetLocation) < myLocation.getBearing()){
thetaMeThem = azimuth - (myLocation.bearingTo(targetLocation) - declination);}
Я не проверял это полностью, но игра с углами на бумаге привела меня сюда.