Принимая во внимание ответ, предоставленный Гипербореем, здесь есть формула авиации: http://williams.best.vwh.net/avform.htm, в которой есть формулы для расчета нового широты / долготы с учетом начальной точки, угла и расстояния.Вы должны рассчитать расстояние самостоятельно.Похоже, у вас есть все, что вам нужно для расчета расстояния, поскольку скорость - это просто расстояние / время, и если вы умножите это на смещение времени, которое вы хотите использовать, вы получите свое расстояние.
1 узел = 1 миль / час расстояние = yourTimeInDecimalHours * speed;
пример кода, иллюстрирующий это (скопировано из ссылки, указанной выше):
double lat1 = 0, lon1 = 0; // NOTE: these are in radians - remember PI/2 radians = 90 degrees
double d = timeInDecimalHours * speedInKnots; // so a half hour at 35 knots would be .5 * 35
double tc = usersTrueCourse; // aka user's heading
double lat= // this will be in radians!!
Math.asin(
Math.sin(lat1)
* Math.cos(d)
+ Math.cos(lat1)
* Math.sin(d)
* Math.cos(tc)
);
double lon = 0;
if (Math.cos(lat) == 0) {
lon = lon1 // endpoint a pole
} else {
lon = (lon1 - Math.asin(Math.sin(tc)*Math.sin(d)/Math.cos(lat)) + Math.PI % (2*Math.PI))-Math.PI;
}