Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculate second point knowing the starting point and distance

using a Latitude and Longitude value (Point A), I am trying to calculate another Point B, X meters away bearing 0 radians from point A. Then display the point B Latitude and Longitude values.

Example (Pseudo code):

PointA_Lat = x.xxxx; PointA_Lng = x.xxxx; Distance = 3; //Meters bearing = 0; //radians  new_PointB = PointA-Distance; 

I was able to calculate the distance between two Points but what I want to find is the second point knowing the distance and bearing.

Preferably in PHP or Javascript.

Thank you

like image 376
pawelglow Avatar asked Feb 02 '10 20:02

pawelglow


People also ask

How do you find new point coordinates from distance and angle?

If your starting point is (0,0), and your new point is r units away at an angle of θ, you can find the coordinates of that point using the equations x = r cosθ and y = r sinθ.


2 Answers

It seems you are measuring distance (R) in meters, and bearing (theta) counterclockwise from due east. And for your purposes (hundereds of meters), plane geometry should be accurate enough. In that case,

dx = R*cos(theta) ; theta measured counterclockwise from due east dy = R*sin(theta) ; dx, dy same units as R 

If theta is measured clockwise from due north (for example, compass bearings), the calculation for dx and dy is slightly different:

dx = R*sin(theta)  ; theta measured clockwise from due north dy = R*cos(theta)  ; dx, dy same units as R 

In either case, the change in degrees longitude and latitude is:

delta_longitude = dx/(111320*cos(latitude))  ; dx, dy in meters delta_latitude = dy/110540                   ; result in degrees long/lat 

The difference between the constants 110540 and 111320 is due to the earth's oblateness (polar and equatorial circumferences are different).

Here's a worked example, using the parameters from a later question of yours:

Given a start location at longitude -87.62788 degrees, latitude 41.88592 degrees, find the coordinates of the point 500 meters northwest from the start location.

If we're measuring angles counterclockwise from due east, "northwest" corresponds to theta=135 degrees. R is 500 meters.

dx = R*cos(theta)     = 500 * cos(135 deg)     = -353.55 meters  dy = R*sin(theta)     = 500 * sin(135 deg)     = +353.55 meters  delta_longitude = dx/(111320*cos(latitude))                  = -353.55/(111320*cos(41.88592 deg))                 = -.004266 deg (approx -15.36 arcsec)  delta_latitude = dy/110540                = 353.55/110540                =  .003198 deg (approx 11.51 arcsec)  Final longitude = start_longitude + delta_longitude                 = -87.62788 - .004266                 = -87.632146  Final latitude = start_latitude + delta_latitude                = 41.88592 + .003198                = 41.889118 
like image 52
Jim Lewis Avatar answered Sep 29 '22 11:09

Jim Lewis


It might help if you knew that 3600 seconds of arc is 1 degree (lat. or long.), that there are 1852 meters in a nautical mile, and a nautical mile is 1 second of arc. Of course you're depending on the distances being relatively short, otherwise you'd have to use spherical trigonometry.

like image 36
Arthur Kalliokoski Avatar answered Sep 29 '22 13:09

Arthur Kalliokoski