react-vr-geolocate
Version:
35 lines (30 loc) • 1.34 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});exports.toRadians=exports.distanceBetweenPoints=exports.midpoint=exports.to3dLocation=undefined;var _rotationOffset=require("../consts/rotationOffset");
var to3dLocation=exports.to3dLocation=function to3dLocation(coords,radius){
var modLon=coords.lon+_rotationOffset.overlayLonOffset;
var cosLat=Math.cos(toRadians(coords.lat));
var sinLat=Math.sin(toRadians(coords.lat));
var cosLon=Math.cos(toRadians(modLon));
var sinLon=Math.sin(toRadians(modLon));
return[
radius*cosLat*sinLon,
radius*sinLat,
radius*cosLat*cosLon];
};
var midpoint=exports.midpoint=function midpoint(coord1,coord2,percent){
var midpoint={coordinates:{lat:coord1.lat+(coord2.lat-coord1.lat)*percent,lon:coord1.lon+(coord2.lon-coord1.lon)*percent}};
return midpoint;
};
var distanceBetweenPoints=exports.distanceBetweenPoints=function distanceBetweenPoints(coord1,coord2,radius){
var R=radius;
var φ1=toRadians(coord1.lat);
var φ2=toRadians(coord2.lat);
var Δφ=toRadians(coord2.lat-coord1.lat);
var Δλ=toRadians(coord2.lon-coord1.lon);
var a=Math.sin(Δφ/2)*Math.sin(Δφ/2)+Math.cos(φ1)*Math.cos(φ2)*Math.sin(Δλ/2)*Math.sin(Δλ/2);
var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
var d=R*c;
return d;
};
var toRadians=exports.toRadians=function toRadians(angle){
return angle*(Math.PI/180);
};