Я создаю приложение, основанное на геолокации, и пытаюсь найти способ заставить мое приложение понять, когда пользователь смотрит в направлении заданного местоположения (определенной длины / широты). У меня есть математика, у меня просто есть треугольник, который нужно построить.
// ОБНОВЛЕНИЕ
Так что я понял это немного ...
Ниже приведен метод, который принимает значение long / lat и пытается вычислить треугольник, находящий точку на расстоянии 700 метров и одну слева + справа. Затем он использовал бы их для построения треугольника. Он вычисляет правильную долготу, но широта заканчивается где-то у побережья восточной Африки. (Я в Ирландии!).
public void drawtri(double currlng,double currlat, double bearing){
bearing = (bearing < 0 ? -bearing : bearing);
System.out.println("RUNNING THE DRAW TRIANGLE METHOD!!!!!");
System.out.println("CURRENT LNG" + currlng);
System.out.println("CURRENT LAT" + currlat);
System.out.println("CURRENT BEARING" + bearing);
//Find point X(x,y)
double distance = 0.7; //700 meters.
double R = 6371.0; //The radius of the earth.
//Finding X's y value.
Math.toRadians(currlng);
Math.toRadians(currlat);
Math.toRadians(bearing);
distance = distance/R;
Global.Alat = Math.asin(Math.sin(currlat)*Math.cos(distance)+
Math.cos(currlat)*Math.sin(distance)*Math.cos(bearing));
System.out.println("CURRENT ALAT!!: " + Global.Alat);
//Finding X's x value.
Global.Alng = currlng + Math.atan2(Math.sin(bearing)*Math.sin(distance)
*Math.cos(currlat), Math.cos(distance)-Math.sin(currlat)*Math.sin(Global.Alat));
Math.toDegrees(Global.Alat);
Math.toDegrees(Global.Alng);
//Co-ord of Point B(x,y)
// Note: Lng = X axis, Lat = Y axis.
Global.Blat = Global.Alat+ 00.007931;
Global.Blng = Global.Alng;
//Co-ord of Point C(x,y)
Global.Clat = Global.Alat - 00.007931;
Global.Clng = Global.Alng;
}
Из отладки я определил, что проблема заключается в вычислении широты, выполненной здесь ..
Global.Alat = Math.asin(Math.sin(currlat)*Math.cos(distance)+
Math.cos(currlat)*Math.sin(distance)*Math.cos(bearing));
Я понятия не имею, почему, хотя и не знаю, как это исправить. Я получил формулу с этого сайта ..
http://www.movable -type.co.uk / скрипты / latlong.html
Кажется, это правильно, и я проверил несколько вещей ...
Я пытался преобразовать в радианы, затем отправить вычисления обратно в градусы и т. Д. И т. Д.
У кого-нибудь есть идеи, как исправить этот метод, чтобы он отображал треугольник ТОЛЬКО в 700 метрах от моего текущего местоположения в направлении, с которым я столкнулся?
Спасибо