Bearings

by subskybox

HTML

<div id='output'></div>

JavaScript

function bearing(current, last) {
    if (last == null) { return null; }

    var currentlon = current.coordinates[0];
    var currentlat = current.coordinates[1];
    var lastlon = last.coordinates[0];
    var lastlat = last.coordinates[1];

    var y = Math.sin(currentlon - lastlon) * Math.cos(currentlat);
    var x = Math.cos(lastlat) * Math.sin(currentlat) - Math.sin(lastlat) * Math.cos(currentlat) * Math.cos(currentlon - lastlon);

    return Math.atan2(y, x) * 180 / Math.PI;
}

function radians(n) {
  return n * (Math.PI / 180);
}
function degrees(n) {
  return n * (180 / Math.PI);
}

function getBearing(startLat,startLong,endLat,endLong){
  startLat = radians(startLat);
  startLong = radians(startLong);
  endLat = radians(endLat);
  endLong = radians(endLong);

  var dLong = endLong - startLong;

  var dPhi = Math.log(Math.tan(endLat/2.0+Math.PI/4.0)/Math.tan(startLat/2.0+Math.PI/4.0));
  if (Math.abs(dLong) > Math.PI){
    if (dLong > 0.0)
       dLong = -(2.0 * Math.PI - dLong);
    else
       dLong = (2.0 * Math.PI + dLong);
  }

  return (degrees(Math.atan2(dLong, dPhi)) + 360.0) % 360.0;
}
 
 var current = {};
 current.coordinates = [];
 var last = {};
 last.coordinates = [];
 //current.coordinates[0] = 39.9;
 //current.coordinates[1] = -104.7;
 //last.coordinates[0] = 39.916666666666664;
 //last.coordinates[1] = -104.68333333333334;
 
//              created_at   position_timestamp flight_number destination_station departure_station latitude longitude speed altitude
//126 2016-08-15T18:56:37Z 2016-08-15T18:56:37Z        XYZ123                KORD              KDEN  42.2910  -88.5542   233     120C
//127 2016-08-15T18:57:39Z 2016-08-15T18:57:39Z        XYZ123                KORD              KDEN  42.2527  -88.5539   249     120C
 current.coordinates[0] = 42.2527;
 current.coordinates[1] = -88.5539;
 last.coordinates[0] = 42.2910;
 last.coordinates[1] = -88.5542;

//               created_at   position_timestamp flight_number destination_station...