Skip to content

Instantly share code, notes, and snippets.

@reyramos
Created March 3, 2017 19:34
Show Gist options
  • Save reyramos/1a8e36ee07d799b03d746a7c87c0c85d to your computer and use it in GitHub Desktop.
Save reyramos/1a8e36ee07d799b03d746a7c87c0c85d to your computer and use it in GitHub Desktop.
Get the speed differential from 2 Longitude and Latitude points.
/**
* Created by ramor11 on 3/3/2017.
*/
function distance_on_geoid(lat1, lon1, lat2, lon2) {
// Convert degrees to radians
lat1 = lat1 * Math.PI / 180.0;
lon1 = lon1 * Math.PI / 180.0;
lat2 = lat2 * Math.PI / 180.0;
lon2 = lon2 * Math.PI / 180.0;
// radius of earth in metres
var r = 6378100;
// P
var rho1 = r * Math.cos(lat1);
var z1 = r * Math.sin(lat1);
var x1 = rho1 * Math.cos(lon1);
var y1 = rho1 * Math.sin(lon1);
// Q
var rho2 = r * Math.cos(lat2);
var z2 = r * Math.sin(lat2);
var x2 = rho2 * Math.cos(lon2);
var y2 = rho2 * Math.sin(lon2);
// Dot product
var dot = (x1 * x2 + y1 * y2 + z1 * z2);
var cos_theta = dot / (r * r);
var theta = Math.acos(cos_theta);
// Distance in Metres
return r * theta;
}
var p1 = {
latitude: '36.082329',
longitude: '-79.483449',
timestamp: '0'
}
var p2 = {
latitude: '36.079751',
longitude: '-79.493433',
timestamp: '300000' //5 minutes
}
var dist = distance_on_geoid(p1.latitude, p1.longitude, p2.latitude, p2.longitude);
var time_s = (p2.timestamp - p1.timestamp) / 1000.0;
var speed_mps = dist / time_s;
var speed_kph = (speed_mps * 3600.0) / 1000.0;
var speed_mph = speed_kph / 1.609344;
console.log('meters per second', speed_mps);
console.log('kilometer per hr', speed_kph);
console.log('miles per second', speed_mph);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment