|
4
chuchundraplus
01.09.10
✎
13:44
|
Функция ПолучитьРасстояниеМеждуТочкамиНаШаре(Долгота1,Широта1,Долгота2,Широта2)Экспорт
ПИ=3.14159265358979;
Если Широта1 = Неопределено
или Широта2 = Неопределено
или Долгота1 = Неопределено
или Долгота2 = Неопределено
Тогда
Возврат Неопределено ;
КонецЕсли;
Широта1_Рад=ПИ*Широта1/180;
Широта2_Рад=ПИ*Широта2/180;
Долгота1_Рад=ПИ*Долгота1/180;
Долгота2_Рад=ПИ*Долгота2/180;
РадиусЗемли=6372795;
b9=cos(Широта1_Рад);
b10=cos(Широта2_Рад);
b11=sin(Широта1_Рад);
b12=sin(Широта2_Рад);
b13=?(Долгота2_Рад-Долгота1_Рад<0,-(Долгота2_Рад-Долгота1_Рад),Долгота2_Рад-Долгота1_Рад);
//b14=abs(Широта1_Рад-Широта2_Рад);
b15=sin(Долгота2_Рад-Долгота1_Рад);
b16=cos(b13);
b18=acos(b11*b12+b9*b10*b16);
УголМеждуТочкамиВРад=atan2(sqrt((b10*b15)*(b10*b15)+(b9*b12-b11*b10*b16)*(b9*b12-b11*b10*b16)),(b11*b12+b9*b10*b16));
b20=atan((b15*b10)/(b9*b12-b11*b10*b16));
b22=180*(b20 % (2*ПИ))/ПИ;
Если (b20>0) Тогда
b22=180*(b20/ПИ);
Иначе
b22=180*((2*ПИ+b20)/ПИ);
КонецЕсли;
//Азимут = round(b22);
b25=РадиусЗемли*b18;
Расстояние = round(РадиусЗемли*УголМеждуТочкамиВРад);
Возврат Расстояние;
КонецФункции // ()
|
|