Skip to content

Instantly share code, notes, and snippets.

@chr0nu5
Created July 30, 2014 13:59
Show Gist options
  • Save chr0nu5/1d9350f53451d6870605 to your computer and use it in GitHub Desktop.
Save chr0nu5/1d9350f53451d6870605 to your computer and use it in GitHub Desktop.
function CalcularAzimuteMagnetico(satlong, eslat, eslong) {
var longdiffr, esCalcularAzimute, latit, longi, a, b, pl, pr, u1, u2, um, esCalcularAzimutem, dev, c;
longdiffr = (eslong - satlong) / 57.29578;
if (eslat == 0) {
eslat = 0.01;
}
esCalcularAzimute = 180 + 57.29578 * Math.atan(Math.tan(longdiffr) / Math.sin((eslat / 57.29578)));
if (eslat < 0) {
esCalcularAzimute = esCalcularAzimute - 180;
}
if (esCalcularAzimute < 0) {
esCalcularAzimute = esCalcularAzimute + 360
}
dev = [4.8, 7.3, 9.5, 16.4, 45.6, 21, 12.5, 9.1, 17.1, 42.5, 24, 13, 9.5, 17, 39, -8.5, 0.75, 4.75,
14, 29.2, -30.5, -16.3, -14.2, -7.5, 10.9, -20, -12.2, -19.2, -24.1, -5.6, -4.5, -1.5, -6.9, -23.8, -19.25, 8.5, 3, 0.5, -22.8, -39.2, 16.25, 2, -4.5, -32.4, -60, 8.75, 0.5,
2.3, -19, -74, 12.5, -4.5, 1.2, 0.8, -63, -11.9, -2.75, 5.75, 11, 38.3, 4.8, 7.3, 9.5, 16.4, 45.6
];
latit = eslat;
longi = eslong;
if (latit == 60) {
latit = 59.99999;
}
if (latit > 59.999999) {
CalcularAzimuteMagnetico = -1
alert('Azimute Inv·lido 1');
return false;
}
if (latit < -60) {
CalcularAzimuteMagnetico = -1
alert('Azimute Inv·lido 2');
return false;
}
if (longi == 180) {
longi = 179.99999;
}
if (longi > 179.999999) {
longi = longi - 360;
}
if (longi < -180) {
longi = longi + 360;
}
a = parseInt(((1 * longi + 180) / 30) - 0.5);
b = 3 - parseInt((((1 * latit + 60) / 30) - 0.5));
c = parseInt((a * 5) + b);
if (latit >= 30) {
pl = latit - 30;
} else {
if (latit >= 0) {
pl = latit;
} else {
if (latit >= -30) {
pl = 30 + latit;
} else {
pl = 60 + latit;
}
}
}
pr = longi + 180 - a * 30;
//encontra os valores de u1 e u2 usando o vetor dev
u1 = dev[(c + 1)] + (dev[c] - dev[(c + 1)]) * pl / 30
u2 = dev[(c + 6)] + (dev[(c + 5)] - dev[(c + 6)]) * pl / 30
um = u1 + (u2 - u1) * pr / 30;
esCalcularAzimutem = esCalcularAzimute - um;
if (esCalcularAzimutem < -180) {
esCalcularAzimutem = esCalcularAzimutem + 360;
}
if (esCalcularAzimutem > 360) {
esCalcularAzimutem = esCalcularAzimutem - 360;
}
// CalcularAzimuteMagnetico = esCalcularAzimutem;
return esCalcularAzimutem;
}
function CalcularElevacao(satlong, eslat, eslong) {
var longdiffr, r1, eslatr, v1, v2, esCalcularElevacao, eselrefracted;
longdiffr = (eslong - satlong) / 57.29578;
eslatr = eslat / 57.29578;
r1 = 1 + 35786 / 6378.16;
v1 = r1 * Math.cos(eslatr) * Math.cos(longdiffr) - 1;
v2 = r1 * Math.sqrt(1 - Math.cos(eslatr) * Math.cos(eslatr) * Math.cos(longdiffr) * Math.cos(longdiffr));
esCalcularElevacao = 57.29578 * Math.atan(v1 / v2);
if (esCalcularElevacao < 30) {
eselrefracted = (esCalcularElevacao + Math.sqrt(esCalcularElevacao * esCalcularElevacao + 4.132)) / 2;
} else {
eselrefracted = esCalcularElevacao;
}
if (eselrefracted < 2) {
eselrefracted = -2;
}
// CalcularElevacao = eselrefracted;
return eselrefracted;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment