Trygonometria sferyczna - długość odcinka
Oleksy_Adam
Sferyczna powierzchnia kuli nie może być odwzorowana na płaszczyźnie bez zniekształceń; również odległość pomiędzy dwoma punktami ulega zniekształceniom. Jedynie w przypadku wielkoskalowych odwzorowań, obejmujących mały wycinek powierzchni, sferyczne zakrzywienie odgrywa znikomą rolę. Pomiar dużej odległości na małoskalowych odwzorowaniach daje wielkie błędy. W tych przypadkach dla wyznaczenia właściwej odległości między dwoma punktami stosuje się formuły trygonometrii sferycznej.
Ten sposób określania odległości wymaga podejścia bardziej geograficznego niż programistycznego, a mianowicie wymaga znajomości współrzędnych: szerokość i długość geograficzną dwóch punktów . Oznaczamy je: lambda - długość, fi - szerokość.
Do wyznaczenia długości stosuje się wzór:
Do wyznaczenia deltyy stosuje się wzór:
gdzie:
l - odległość A-B
r - promień kuli
delta- kąt środkowy
Ponieważ komputery wolą radiany, wartość należy skorygować w następujący sposób:
Aby móc przeprowadzić obliczenia w delphi należy użyć modułu Math. W przypadku Turbo Pascala, należy zadeklarować funkcję arcus cosinus. Oblicza się ją w następujący sposób (z uwzględnieniem konwersji radianów na stopnie):
Oto przykładowa implementacja funkcji:
function ArcCos(X: Double): Double;
begin
ArcCos := ArcTan(Sqrt(1 - Sqr(X)) / X;
end;
Funkcja zwracająca długość odcinka może mieć postać:
// f - to fi
// l - to lambda
// r - promień kuli
function Len(fA, fB, lA, lB, r: Double): Double;
var
delta: Double;
begin
delta := Sin(fA) * Sin(fB) + Cos(fA) * Cos(fB) * Cos(lA ? lB);
delta := ArcCos(delta) * 90 / Pi;
Len := r * delta * Pi / 180;
end;
Ważne aby kąt podawać nie w formacie stopień.minuta tylko w postaci dziesiętnej. Jeżeli chcemy użyć minut konieczne byłyby dalsze przekształcenia.
Super artykuł, podoba mi się, a może jakaś procedura na obliczenie poprawki ze względu na odwzorowanie w układzie 65 ;)
Napisałem czemu napisałem to co napisałem.
Jedyna kula którą znam, taka która posiada szerokość i długość geograficzną to Ziemia ;-)
A, że tak a nie inaczej pisze się ?duży?? No cóż, wynika to z historii, tradycji itp. czyli taka kompatybilność w dół, o której Seymour Cray mówił że to ?trucizna?. ;-)
Dalej żem ciekaw poprawki ?elipsoidalnej?.
Xitami, wzór dotyczy tylko i wyłącznie kuli, czy w arcie choć jedno słowo mówi o Ziemi? I Tak na marginesie: "durzy" piszę się tak: duży
WeeR - pewnie masz racje.. plany zmiany takiego stanu rzeczy na horyzoncie :)
Sugeruję jeszcze poprawienie formatowania kodu, używając standardowych zasad. Tj. wcięcia w rozmiarze 2 spacji, nazwy zmiennych i funkcji od drugiej litery, nazwa: typ; przy definicji zmiennych, odstępy z obu stron operatorów, etc.
//a, i osobiście argumenty do tych funkcji przekazałbym jako const
Coldpeer dzięki za info. Poprawiłem buga.
"Return := r * ..." a nie Result? :>
Marooned : coś mi się zdaje, ze nie bardzo ten LaTeX jest widoczny, tzn nie wiele osób wie jak go używać, i nie ma żadnego info że jest
Pliki nazwane 'schowek' ?? kpisz?
ludzie, ilez mozna... nazywajcie pliki zgodnie z ich zawartością!!!! nie jesteście tu sami..
poza tym, mamy LaTeXa na 4p, mozna bylo jego uzyc...
Powiem o czymś, o czym nie wielu wie lub zdaje sobie sprawę. Z tego, że Ziemia (przez durze ?Z?) nie jest kulą wynika coś wymiernego w pieniądzach! Przy handlowaniu tankowcami ropy, ma znaczenie różnica szerokości geograficznych portów ?źródłowego? i ?docelowego? . (Nie dokładnie ?różnica? ale...)
Sprzedaje/kupuje się kilogramy, NIE litry!
Różnica ciężarów (nie masy, przypominam: na wadze mierzymy CIĘŻAR) przy pewnej skali (tankowce) jest bardzo istotna, aż tak, że uwzględnia się ją na giełdzie.
Ciekawym bardzo, jak uwzględnienie ?biegunowego? i ?równikowego? promienia wpłynie na szacowanie odległości. Czy mógłbyś uściślić wzór?
------------------------------------------------------------------------------------------------------- [ Xitami ]-----