﻿var OFSET_GAUS_DUZINE=324000-45000;var OFSET_GAUS_SIRINE=5124000;function WGS2Map(GeoDuzinaWGS,GeoSirinaWGS){var rez=new yPoint();var PrimenitiOffsete=true;var NadmorskaVisinaWGS=100;if(!(GeoDuzinaWGS>0&&GeoSirinaWGS>0)){rez.X=0;rez.Y=0;return rez;}GeoDuzinaWGS=GeoDuzinaWGS*Math.PI/180;GeoSirinaWGS=GeoSirinaWGS*Math.PI/180;var Awgs=6378137.0;var Bwgs=6356752.314;var Nwgs;Nwgs=Math.pow(Awgs,2)/Math.sqrt(Math.pow(Awgs,2)*Math.pow(Math.cos(GeoSirinaWGS),2)+Math.pow(Bwgs,2)*Math.pow(Math.sin(GeoSirinaWGS),2));var Xwgs;var Ywgs;var Zwgs;Xwgs=(Nwgs+NadmorskaVisinaWGS)*Math.cos(GeoSirinaWGS)*Math.cos(GeoDuzinaWGS);Ywgs=(Nwgs+NadmorskaVisinaWGS)*Math.cos(GeoSirinaWGS)*Math.sin(GeoDuzinaWGS);Zwgs=(Math.pow(Bwgs,2)/Math.pow(Awgs,2)*Nwgs+NadmorskaVisinaWGS)*Math.sin(GeoSirinaWGS);var k=0.99999282;var Xscg;var Yscg;var Zscg;Xscg=k*Xwgs-0.0000651218*k*Ywgs+0.00000409442*k*Zwgs-575.2;Yscg=0.0000651218*k*Xwgs+k*Ywgs+0.000023508*k*Zwgs-172.7;Zscg=-0.00000409442*k*Xwgs-0.000023508*k*Ywgs+k*Zwgs-396.9;var Bscg;var Lscg;var Hscg;Lscg=Math.atan(Yscg/Xscg);var Abesel=6377397.155;var Bbesel=6356078.963;var p;var Ebesel;p=Math.sqrt(Math.pow(Xscg,2)+Math.pow(Yscg,2));Ebesel=Math.sqrt((Math.pow(Abesel,2)-Math.pow(Bbesel,2))/Math.pow(Abesel,2));var Bnula;var Nnula;var Hnula;var Bpopravljeno;var Nbesel;Bnula=Math.atan(Zscg/(p*(1-Math.pow(Ebesel,2))));Nnula=Math.pow(Abesel,2)/Math.sqrt(Math.pow(Abesel,2)*Math.pow(Math.cos(Bnula),2)+Math.pow(Bbesel,2)*Math.pow(Math.sin(Bnula),2));Hnula=p/Math.cos(Bnula)-Nnula;Bpopravljeno=Math.atan(Zscg/(p*(1-Math.pow(Ebesel,2)*Nnula/(Nnula+Hnula))));var i=0;while(Math.abs(Bpopravljeno-Bnula)<0.00000001&&i<1000000){Bnula=Bpopravljeno;Nnula=Math.pow(Abesel,2)/Math.sqrt(Math.pow(Abesel,2)*Math.pow(Math.cos(Bnula),2)+Math.pow(Bbesel,2)*Math.pow(Math.sin(Bnula),2));Hnula=p/Math.cos(Bnula)-Nnula;Bpopravljeno=Math.atan(Zscg/(p*(1-Math.pow(Ebesel,2)*Nnula/(Nnula+Hnula))));i+=1;}Bscg=Bpopravljeno;Nbesel=Math.pow(Abesel,2)/Math.sqrt(Math.pow(Abesel,2)*Math.pow(Math.cos(Bscg),2)+Math.pow(Bbesel,2)*Math.pow(Math.sin(Bscg),2));Hscg=p/Math.cos(Bscg)-Nbesel;var Lnula=21*Math.PI/180;var N,t,l,ni,cosBscg,DBscg;cosBscg=Math.cos(Bscg);ni=(Math.pow(Abesel,2)-Math.pow(Bbesel,2))/Math.pow(Bbesel,2)*Math.pow(cosBscg,2);N=Math.pow(Abesel,2)/(Bbesel*Math.sqrt(1+ni));t=Math.tan(Bscg);l=Lscg-Lnula;var Xgaus,Ygaus;var ALFA=6366742.5203;var BETA=-0.00251127456;var GAMA=0.00000262771;var DELTA=-0.00000000342;var EPSILON=0.000000000005;Xgaus=N*cosBscg*l+1/6*N*Math.pow(cosBscg,3)*(1-Math.pow(t,2)+ni)*Math.pow(l,3)+1/120*N*Math.pow(cosBscg,5)*(5-18*Math.pow(t,2)+Math.pow(t,4)+14*ni-58*Math.pow(t,2)*ni)*Math.pow(l,5)+1/5040*N*Math.pow(cosBscg,7)*(61-479*Math.pow(t,2)+179*Math.pow(t,4)-Math.pow(t,6))*Math.pow(l,7);DBscg=ALFA*(Bscg+BETA*Math.sin(2*Bscg)+GAMA*Math.sin(4*Bscg)+DELTA*Math.sin(6*Bscg)+EPSILON*Math.sin(8*Bscg));Ygaus=DBscg+t/2*N*Math.pow(cosBscg,2)*Math.pow(l,2)+t/24*N*Math.pow(cosBscg,4)*(5-Math.pow(t,2)+9*ni+4*ni)*Math.pow(l,4)+t/720*N*Math.pow(cosBscg,6)*(61-58*Math.pow(t,2)+Math.pow(t,4)+270*ni-330*Math.pow(t,2)*ni)*Math.pow(l,6)+t/40320*N*Math.pow(cosBscg,8)*(1385-3111*Math.pow(t,2)+543*Math.pow(t,4)-Math.pow(t,6))*Math.pow(l,8);Xgaus=Xgaus*0.9999+500000;Ygaus=Ygaus*0.9999;if(PrimenitiOffsete){rez.X=parseInt(Xgaus-OFSET_GAUS_DUZINE);rez.Y=parseInt(OFSET_GAUS_SIRINE-Ygaus);}else{rez.X=parseInt(Xgaus);rez.Y=parseInt(Ygaus);}return rez;}function Map2WGS(X,Y){var rez=new yPoint();var PrimenitiOffsete=true;var pX,pY;if(PrimenitiOffsete){X=X+OFSET_GAUS_DUZINE;Y=OFSET_GAUS_SIRINE-Y;}pX=1/0.9999*(X-500000);pY=1/0.9999*Y;var Lnula=21*Math.PI/180;var Abesel=6377397.155;var Bbesel=6356078.963;var ALFA=6366742.5203;var BETA=0.00251127324;var GAMA=0.00000367879;var DELTA=0.00000000738;var EPSILON=0.000000000017;var Ypom;var Bf;var Nf;var ni;var tf;var cosBf;var Nbesel;Ypom=pY/ALFA;Bf=Ypom+BETA*Math.sin(2*Ypom)+GAMA*Math.sin(4*Ypom)+DELTA*Math.sin(6*Ypom)+EPSILON*Math.sin(8*Ypom);cosBf=Math.cos(Bf);ni=(Math.pow(Abesel,2)-Math.pow(Bbesel,2))/Math.pow(Bbesel,2)*Math.pow(cosBf,2);Nf=Math.pow(Abesel,2)/(Bbesel*Math.sqrt(1+ni));tf=Math.tan(Bf);var B;var L;B=Bf+tf/(2*Math.pow(Nf,2))*(-1-ni)*Math.pow(pX,2)+tf/(24*Math.pow(Nf,4))*(5+3*Math.pow(tf,2)+6*ni-6*Math.pow(tf,2)*ni-3*Math.pow(ni,2)-9*Math.pow(tf,2)*Math.pow(ni,2))*Math.pow(pX,4)+tf/(720*Math.pow(Nf,6))*(-61-90*Math.pow(tf,2)-45*Math.pow(tf,4)-107*ni+162*Math.pow(tf,2)*ni+45*Math.pow(tf,4)*ni)*Math.pow(pX,6)+tf/(40320*Math.pow(Nf,8))*(1385+3633*Math.pow(tf,2)+4095*Math.pow(tf,4)+1575*Math.pow(tf,6))*Math.pow(pX,8);L=Lnula+1/(Nf*cosBf)*pX+1/(6*Math.pow(Nf,3)*cosBf)*(-1-2*Math.pow(tf,2)-ni)*Math.pow(pX,3)+1/(120*Math.pow(Nf,5)*cosBf)*(5+28*Math.pow(tf,2)+24*Math.pow(tf,4)+6*ni+8*Math.pow(tf,2)*ni)*Math.pow(pX,5)+1/(5040*Math.pow(Nf,7)*cosBf)*(-61-662*Math.pow(tf,2)-1320*Math.pow(tf,4)-720*Math.pow(tf,6))*Math.pow(pX,7);Nbesel=Math.pow(Abesel,2)/Math.sqrt(Math.pow(Abesel,2)*Math.pow(Math.cos(B),2)+Math.pow(Bbesel,2)*Math.pow(Math.sin(B),2));var Xscg;var Yscg;var Zscg;Xscg=Nbesel*Math.cos(B)*Math.cos(L);Yscg=Nbesel*Math.cos(B)*Math.sin(L);Zscg=Math.pow(Bbesel,2)/Math.pow(Abesel,2)*Nbesel*Math.sin(B);var k=1.00000718;var Xwgs;var Ywgs;var Zwgs;Xwgs=k*Xscg+0.0000651218*k*Yscg-0.00000409442*k*Zscg+575.2;Ywgs=-0.0000651218*k*Xscg+k*Yscg-0.000023508*k*Zscg+172.7;Zwgs=0.00000409442*k*Xscg+0.000023508*k*Yscg+k*Zscg+396.9;var Awgs=6378137.0;var Bwgs=6356752.314;var GeoSirinaWGS;var GeoDuzinaWGS;GeoDuzinaWGS=Math.atan(Ywgs/Xwgs);var p;var Ewgs;p=Math.sqrt(Math.pow(Xwgs,2)+Math.pow(Ywgs,2));Ewgs=Math.sqrt((Math.pow(Awgs,2)-Math.pow(Bwgs,2))/Math.pow(Awgs,2));var GeoSirinaNula;var Nnula;var Hnula;var GeoSirinaPopravljeno;var Nwgs;var Hwgs;GeoSirinaNula=Math.atan(Zwgs/(p*(1-Math.pow(Ewgs,2))));Nnula=Math.pow(Awgs,2)/Math.sqrt(Math.pow(Awgs,2)*Math.pow(Math.cos(GeoSirinaNula),2)+Math.pow(Bwgs,2)*Math.pow(Math.sin(GeoSirinaNula),2));Hnula=p/Math.cos(GeoSirinaNula)-Nnula;GeoSirinaPopravljeno=Math.atan(Zwgs/(p*(1-Math.pow(Ewgs,2)*Nnula/(Nnula+Hnula))));var i=0;while(Math.abs(GeoSirinaPopravljeno-GeoSirinaNula)<0.00000001&&i<1000000){GeoSirinaNula=GeoSirinaPopravljeno;Nnula=Math.pow(Awgs,2)/Math.sqrt(Math.pow(Awgs,2)*Math.pow(Math.cos(GeoSirinaNula),2)+Math.pow(Bwgs,2)*Math.pow(Math.sin(GeoSirinaNula),2));Hnula=p/Math.cos(GeoSirinaNula)-Nnula;GeoSirinaPopravljeno=Math.atan(Zwgs/(p*(1-Math.pow(Ewgs,2)*Nnula/(Nnula+Hnula))));i+=1;}GeoSirinaWGS=GeoSirinaPopravljeno;Nbesel=Math.pow(Awgs,2)/Math.sqrt(Math.pow(Awgs,2)*Math.pow(Math.cos(GeoSirinaWGS),2)+Math.pow(Bwgs,2)*Math.pow(Math.sin(GeoSirinaWGS),2));Hwgs=p/Math.cos(GeoSirinaWGS)-Nbesel;rez.X=GeoDuzinaWGS*180/Math.PI;rez.Y=GeoSirinaWGS*180/Math.PI;return rez;}function Gaus2Map(X,Y){var rez=new yPoint();rez.X=Math.abs(X-7279000);rez.Y=Math.abs(5124000-Y);return rez;}function Map2Gaus(X,Y){var rez=new yPoint();rez.X=Math.abs(X+7279000);rez.Y=Math.abs(5124000-Y);return rez;}