Created
October 18, 2016 20:44
-
-
Save tekk/65ab3397a9d06d05c98068847ffa0b8a to your computer and use it in GitHub Desktop.
Vypocet vzdialenosti a azimutu medzi dvoma lokatormi - JavaScript
This file contains 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
<div id="lokator"> | |
<span lang="sk"><form lpformnum="1"> | |
<p align="center">Tvoj lokátor | |
<input maxlength="6" name="lokators" value="JN98NT" size="7" style="text-align: center; border: 1px solid #aaa;"> | |
<span style="margin-left:1em;">Lokátor protistanice</span> | |
<input maxlength="6" name="lokatort" value="JN98CD" size="7" style="text-align: center; border: 1px solid #aaa;"><span lang="sk"> | |
<input onclick="vypocet(this.form);" type="button" value="Výpočítaj" style="margin-left:1em;"> | |
<span style="margin-left:2em; font-weight: bold;">Vzdialenosť | |
<input name="vzdalenost" value="" size="5" style="text-align: center; border: 1px solid #aaa; font-weight:bold;"> | |
km</span> | |
<span style="margin-left:1em; font-weight: bold;">Azimut | |
<input name="azimut" value="" size="4" style="text-align: center; border: 1px solid #aaa; font-weight:bold;"> °</span> | |
</span></p></form></span> | |
</div> | |
<script> | |
function isChar (znak) { if (znak<"A" || znak>"Z") { return false; } return true; } | |
function isNum (znak) { if (znak<"0" || znak>"9") { return false; } return true; } | |
function TestLokatoru (lokator) { | |
lokator = lokator.toUpperCase(); | |
if (lokator.length != 6) { | |
alert ("Ka?d? lok?tor m? ?es? znakov. Pros?m opravte chybu!"); | |
return false; | |
} | |
var L0 = lokator.charAt(0); | |
var L1 = lokator.charAt(1); | |
var L2 = lokator.charAt(2); | |
var L3 = lokator.charAt(3); | |
var L4 = lokator.charAt(4); | |
var L5 = lokator.charAt(5); | |
if (!isChar(L0) || !isChar(L1) || | |
!isNum (L2) || !isNum (L2) || | |
!isChar(L4) || !isChar(L5) ) { | |
alert ("Lok?tor je je nespr?vne zadan?!"); | |
return false; | |
} | |
} | |
function PrevedNaZnaky (t) { | |
var i=0; | |
var csstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | |
for (i=0; i<csstr.length; i++) { if (t==csstr.charAt(i)) {return i+65;} } | |
var csstr="0123456789"; | |
for (i=0; i<csstr.length; i++) { if (t==csstr.charAt(i)) {return i+48;} } | |
alert ("Tak?to znak nem??e obsahova? WW-lok?tor: "+t); | |
return 0; | |
} | |
function zdelka (lokator) { | |
var L0 = PrevedNaZnaky(lokator.charAt(0)); | |
var L2 = PrevedNaZnaky(lokator.charAt(2)); | |
var L4 = PrevedNaZnaky(lokator.charAt(4)); | |
var LQ = ((L0-74)*20+(L2-48)*2+(L4-65)/12.0)/180*Math.PI; | |
return LQ; | |
} | |
function zsirka (lokator) { | |
var L1 = PrevedNaZnaky(lokator.charAt(1)); | |
var L3 = PrevedNaZnaky(lokator.charAt(3)); | |
var L5 = PrevedNaZnaky(lokator.charAt(5)); | |
var FQ = ((L1-74)*10+(L3-48)+(L5-65)/24.0)/180*Math.PI; | |
return FQ; | |
} | |
function vypocet (form) { | |
var TLQ = 0; | |
var TFQ = 0; | |
var SLQ = 0; | |
var SFQ = 0; | |
var smer= 0; | |
var ss = 0; | |
var x1 = 0; | |
var x2 = 0; | |
form.lokators.value = form.lokators.value.toUpperCase(); | |
if (TestLokatoru (form.lokators.value)) { | |
form.lokators.focus(); | |
return false; | |
} | |
form.lokatort.value = form.lokatort.value.toUpperCase(); | |
if (TestLokatoru (form.lokatort.value)) { | |
form.lokators.focus(); | |
return false; | |
} | |
SLQ = zdelka (form.lokators.value); | |
SFQ = zsirka (form.lokators.value); | |
TLQ = zdelka (form.lokatort.value); | |
TFQ = zsirka (form.lokatort.value); | |
with (Math) { | |
ss = (SLQ-TLQ); | |
x1 = cos(SFQ) * tan(TFQ); | |
x2 = sin(SFQ) * cos(ss); | |
if (x1>x2) smer=180-(atan(sin(ss)/(x1-x2))+PI)*180/PI; | |
if (x1<x2) smer=180-(atan(sin(ss)/(x1-x2)))*180/PI; | |
while (smer>=360) { smer-=360;} | |
while (smer<0) { smer+=360;} | |
smer = round(smer); | |
form.azimut.value = smer; | |
ss = acos(cos(ss) * cos(SFQ) * cos(TFQ) + sin(SFQ) * sin(TFQ)); | |
form.vzdalenost.value = 6378*sqrt(1+(1-2.*cos(ss))); | |
form.vzdalenost.value = round(form.vzdalenost.value); | |
} | |
return true; | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment