Created
March 3, 2017 19:34
-
-
Save reyramos/1a8e36ee07d799b03d746a7c87c0c85d to your computer and use it in GitHub Desktop.
Get the speed differential from 2 Longitude and Latitude points.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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