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...