Looking for resources or algorithm to calculate the following in a navigation app:
If my current GPS position is (0,0) and I\'m heading 32 degrees at 15 miles per hour,
Here is the complete parametric answer :
variables :
heading : heading (i.e. backwards angle from azimuth 0°, in degrees)speed : velocity (i.e. norm of the speed vector, in miles/hour)lat0, lon0 : initial coordinates in degreesdtime : time interval from the start position, in secondslat, lon : predicted coordinates in degreespi : the pi constant (3.14159...)Rt : Earth radius in miles (6378137.0 meters which makes 3964.037911746 miles) In an (East, North) local frame, the position after the time interval is :
x = speed * sin(heading*pi/180) * dtime / 3600;
y = speed * cos(heading*pi/180) * dtime / 3600;
(with coordinates in miles)
From there you can compute the new position in the WGS84 frame (i.e. latitude and longitude) :
lat = lat0 + 180 / pi * y / Rt;
lon = lon0 + 180 / pi / sin(lat0*pi/180) * x / Rt;
Edit : corrected the last line : *sin(phi) to /sin(phi)