Данная программа считает расстояние между двумя точками с известными географическими координатами. Вычисления идут по формуле:
$sim
dim fi1 as single ' начальная координата по широте
dim fi2 as single ' конечная координата по широте
dim ta1 as single ' начальная координата по долготе
dim ta2 as single ' конечная координата по долготе
'*** все координаты должны быть преобразованы в радианы
dim SIGMA as single 'разница координат по долготе
dim nst1 as single ' переменные для предварительных преобразований
dim nst2 as single
dim nst3 as single
dim result as single 'результат
'тестовые координаты
'**********
fi1=53.8798
fi2=53.0541
ta1=50.0019
ta2=51.0051
'**********
fi1 = deg2rad(fi1)
fi2 = deg2rad(fi2)
ta1 = deg2rad(ta1)
ta2 = deg2rad(ta2)
if ta2>ta1 then
sigma =ta2-ta1
else
sigma=ta1-ta2
end if
'1
Nst1 = cos(fi2)
nst2 = sin(sigma)
nst3=nst1*nst2
result=nst3^2
'2
nst1 = cos(fi1)
nst2=sin(fi2)
nst3=nst1*nst2
'3
nst1=sin(fi1)
nst2=cos(fi2)
nst1=nst1*nst2
nst2=cos(sigma)
nst1=nst1*nst2
'4
nst2=nst3-nst1
nst2=nst2^2
result = result + nst2
result=sqr(result)
'5
nst1=sin(fi1)
nst2=sin(fi2)
nst3=nst1*nst2
'6
nst1=cos(fi1)
nst2=cos(fi2)
nst1=nst1*nst2
nst2=cos(sigma)
nst1=nst1*nst2
nst3=nst3+nst1
'7
result=result/nst3
result=atn(result)
result=result*6372795 'результат в метрах
print result
end
dim fi1 as single ' начальная координата по широте
dim fi2 as single ' конечная координата по широте
dim ta1 as single ' начальная координата по долготе
dim ta2 as single ' конечная координата по долготе
'*** все координаты должны быть преобразованы в радианы
dim SIGMA as single 'разница координат по долготе
dim nst1 as single ' переменные для предварительных преобразований
dim nst2 as single
dim nst3 as single
dim result as single 'результат
'тестовые координаты
'**********
fi1=53.8798
fi2=53.0541
ta1=50.0019
ta2=51.0051
'**********
fi1 = deg2rad(fi1)
fi2 = deg2rad(fi2)
ta1 = deg2rad(ta1)
ta2 = deg2rad(ta2)
if ta2>ta1 then
sigma =ta2-ta1
else
sigma=ta1-ta2
end if
'1
Nst1 = cos(fi2)
nst2 = sin(sigma)
nst3=nst1*nst2
result=nst3^2
'2
nst1 = cos(fi1)
nst2=sin(fi2)
nst3=nst1*nst2
'3
nst1=sin(fi1)
nst2=cos(fi2)
nst1=nst1*nst2
nst2=cos(sigma)
nst1=nst1*nst2
'4
nst2=nst3-nst1
nst2=nst2^2
result = result + nst2
result=sqr(result)
'5
nst1=sin(fi1)
nst2=sin(fi2)
nst3=nst1*nst2
'6
nst1=cos(fi1)
nst2=cos(fi2)
nst1=nst1*nst2
nst2=cos(sigma)
nst1=nst1*nst2
nst3=nst3+nst1
'7
result=result/nst3
result=atn(result)
result=result*6372795 'результат в метрах
print result
end
координаты, расстояние, теорема гаверсинусов, bascom-avr
авторизация
метки