Вверх ↑
Ответов: 8887
Рейтинг: 823
#1: 2021-08-05 09:43:05 ЛС | профиль | цитата
Joiner, формула вычисляет угол между двумя радиусами от центра Земли до указанных точек. Этот угол умножается на долю окружности Земли приходящейся на единицу угла. При измерении в радианах эта доля равна ~6371 км, а на один градус придётся 111.195 км -- надо изменить множитель в формуле.
Ой, пример забыл:
Пример

Add(MainForm,14022258,231,182)
{
}
Add(MathParse,1279666,343,182)
{
DataCount=4
MathStr="ArcCos(Sin(%1)*Sin(%3) + Cos(%1)*Cos(%3)*Cos(%2 - %4))*111.195"
AngleMode=1
link(onResult,10789273:doText,[])
link(X1,5556894:Text,[(349,173)(286,173)])
link(X2,11125924:Text,[(356,166)(328,166)])
link(X3,5942038:Text,[(363,166)(370,166)])
link(X4,14247622:Text,[(370,173)(412,173)])
}
Add(Button,1612448,280,182)
{
Left=40
Top=110
link(onClick,1279666:doCalc,[])
}
Add(Edit,10789273,406,182)
{
Left=115
Top=110
Width=100
}
Add(InfoTip,5347390,175,56)
{
Info=#67: cos(d) = (sin(ША) ·sin(ШB) + cos(ША) ·cos(ШB))*cos(ДА - ДB), где|33: ША и ШB — широты данных пунктов|33: ДА, ДB — долготы данных пунктов|43: d — угол между пунктами по большому кругу|0:|
HAlign=0
Width=330
Height=60
}
Add(Edit,5556894,280,126)
{
Left=165
Top=30
Text="34.88922"
}
Add(Edit,11125924,322,126)
{
Left=105
Top=30
Text="-72.04978"
}
Add(Edit,5942038,364,126)
{
Left=165
Top=60
Text="48.35889"
}
Add(Edit,14247622,406,126)
{
Left=105
Top=60
Text="2.59583"
}
Add(Label,6604572,231,126)
{
Left=110
Top=10
Width=103
Height=17
Caption="Долгота Широта"
}

карма: 19

1
Голосовали:Joiner
Редактировалось 2 раз(а), последний 2021-08-07 09:31:44