Tracks OziExplorer PLT transformed trackpoint file 1 0 Track Points Path 1 #trackpathLineStyle 1 clampedToGround 1 1 #trackPointStyle 0 clampedToGround ,, 0 ,, 0 0?klim:klim=0; return klim.toFixed(1); } function downhillMeters(elev1, elev2) { var down = elev2 - elev1; down<0?down:down=0; return down.toFixed(1); } //Spherical law of cosines for great-circle distances of two points function distCosineLaw (lon1,lat1,lon2,lat2) { var ratio = Math.PI / 180; var R = 6371000; lon1 *= ratio lat1 *= ratio lon2 *= ratio lat2 *= ratio var d =( Math.acos( Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1) ) * R).toFixed(0) ; return d; } function bearing (lon1, lat1, lon2, lat2) { var y = Math.sin(lon2 - lon1) * Math.cos(lat2); var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1); return Math.atan2(y, x); } function bearingDeg (lon1, lat1, lon2, lat2) { var ratio = Math.PI / 180; lon1 *= ratio lat1 *= ratio lon2 *= ratio lat2 *= ratio var y = Math.sin(lon2 - lon1) * Math.cos(lat2); var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1); var result = Math.floor(Math.atan2(y, x) * 180 / Math.PI); result<0?result = 360 + result:result; return result } function radToBrng (rad) { return radToDegMinSec((rad+2*Math.PI) % (2*Math.PI)); } function radToDegMinSec(rad) { return ((rad<0?'-':"") + _dms(rad)); } function _dms(rad) { var d = Math.abs(rad * 180 / Math.PI); var deg = Math.floor(d); var min = Math.floor((d-deg)*60); var sec = Math.round((d-deg-min/60)*3600); // add leading zeros if required if (deg<100) deg = '0' + deg; if (deg<10) deg = '0' + deg; if (min<10) min = '0' + min; if (sec<10) sec = '0' + sec; return deg + '\u00B0' + min + '\u2032' + sec + '\u2033'; } ]]>