Hi all,
Given a start point (in latitude/longitude), initial heading (0 - 360 degrees), and distance (in meters), I am trying to find a second point, B. I've tried several solutions, amongst the closest being:
Code:
lat = asin(sin(lat1)*cos(distance)+cos(lat1)*sin(distance)*cos(heading))
IF (cos(lat)=0)
lon=lon1
ELSE
lon=(lon1-asin(sin(heading)*sin(distance)/cos(lat))+pi % (2*pi))-pi
ENDIF
(obtained from Aviation Formulary V1.45)
The above didn't work, returning a wrong co-ordinate (e.g. if point B is due north, it would appear NW or NE etc)
After googling extensively, I managed to piece together the following (again without avail):
Code:
heading = toRadians(heading);
lat = toRadians(lat);
lon =toRadians(lon);
angularDistance = distance / WGS84_EARTH_RADIUS;
newLat = asin(
sin(lat) * cos(angularDistance)
+ cos(lat) * sin(angularDistance) * cos(heading));
dlon = atan2(
sin(bearing) * sin(angularDistance) * cos(lat),
cos(angularDistance) - sin(lat) * sin(newLat));
newLong = ((lon + dlon + PI) % (PI * 2)) - PI;
I'm sure that the problem is a simple one, however given how long it has been since I last did geometry....
Any suggestions?
Thanks for your time :-)