title: Get lat/long given current point, distance and bearing
body: <p>Given an existing point in lat/long, distance in (in KM) and bearing (in degrees converted to radians), I would like to calculate the new lat/long. <a href="http://www.movable-type.co.uk/scripts/latlong.html" rel="noreferrer">This</a> site crops up over and over again, but I just can't get the formula to work for me. </p>
  
  <p>The formulas as taken the above link are:</p>
  
  <pre><code>lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(θ))
  
  lon2 = lon1 + atan2(sin(θ)*sin(d/R)*cos(lat1), cos(d/R)−sin(lat1)*sin(lat2))
  </code></pre>
  
  <p>The above formula is for MSExcel where-  </p>
  
  <pre><code>asin          = arc sin()   
  d             = distance (in any unit)   
  R             = Radius of the earth (in the same unit as above)  
  and hence d/r = is the angular distance (in radians)  
  atan2(a,b)    = arc tan(b/a)  
  θ is the bearing (in radians, clockwise from north);  
  </code></pre>
  
  <p>Here's the code I've got in Python.</p>
  
  <pre><code>import math
  
  R = 6378.1 #Radius of the Earth
  brng = 1.57 #Bearing is 90 degrees converted to radians.
  d = 15 #Distance in km
  
  #lat2  52.20444 - the lat result I'm hoping for
  #lon2  0.36056 - the long result I'm hoping for.
  
  lat1 = 52.20472 * (math.pi * 180) #Current lat point converted to radians
  lon1 = 0.14056 * (math.pi * 180) #Current long point converted to radians
  
  lat2 = math.asin( math.sin(lat1)*math.cos(d/R) +
               math.cos(lat1)*math.sin(d/R)*math.cos(brng))
  
  lon2 = lon1 + math.atan2(math.sin(brng)*math.sin(d/R)*math.cos(lat1),
                       math.cos(d/R)-math.sin(lat1)*math.sin(lat2))
  
  print(lat2)
  print(lon2)
  </code></pre>
  
  <p>I get </p>
  
  <pre><code>lat2 = 0.472492248844 
  lon2 = 79.4821662373
  </code></pre>