Metoda euklidesowa
Metoda wykorzystuje geometrię euklidesową dla wyznaczenia pojedynczych punktów. Rozwiązywane są konstrukcje geometryczne w oparciu o zależności skalarne. Najczęściej wykorzystywane są trójkąty.
Podstawowe wzory dla trójkąta
(3.2.1)
wzór sinusów, twierdzenie Sneliusa (3.2.2)
wzór cosinusów, twierdzenie Carnota (3.2.3)
wzór połówkowy, twierdzenie Borda-Eulera (3.2.4)
warunek trójkąta p>0 p-a>0 p-b>0 p-c>0
3.2.1. Zadanie wprost i odwrotne, transformacje i orientacje
Kontakt z układem współrzędnych realizują dwa zadania geodezyjne wprost i odwrotne:
- zadanie wprost polega na wyznaczeniu współrzędnych [x,y] końca odcinka o znanej długości d i azymucie α poprowadzonego z punktu o znanych współrzędnych [xp,yp] (tzw. „bagnet”);
-zadanie odwrotne polega na obliczeniu odległości i azymutu odcinka o znanych współrzędnych obu końców. Zadanie odwrotne wyznacza parametry orientacji układu lokalnego, a zadanie wprost pozwala na przetransformowanie pozycji z układu lokalnego biegunowego do zasadniczego. Szczegółowe procedury obliczeniowe zamieszczamy w p 12.3. Zadania te stanowią przejścia między współrzędnymi kartezjańskimi i biegunowymi, niektóre kalkulatory realizują je bezpośrednio (transformacja Polar-Rectangular klawisz , transformacja Rectangular-Polar klawisz ). Metoda euklidesowa jest stosowana analogicznie na powierzchni sfery i elipsoidy obrotowej.
Algorytm 3.2.1. Geodezyjne zadanie wprost na płaszczyźnie
procedure Pwprost(x1,y1,d12,A12:real; val x2,y2:real);
begin
x2:=x1+d12*cos(A12);
y2:=y1+d12*sin(A12);
end;
Algorytm 3.2.2. Geodezyjne zadanie odwrotne na płaszczyźnie
procedure Podwrotne(x1,y1,x2,y2:real; val d12,A12:real);
var x,y:real;
begin x:=x2-x1; y:=y2-y1; d12:=sqr(x)+sqr(y);
if d12>0.0 then
begin d12:=sqrt(d12);
if abs(x)>abs(y) then
begin A12:=arctan(y/x); if x<0.0 then A12:=A12+pi; end
else
begin A12:=0.5*pi-arctan(x/y); if x<0.0 then A12:=A12-pi; end;
end;
end;
3.2.2. Klasyczne kątowe wcięcie wstecz
Na punkcie wyznaczanym P pomierzono dwa kąty α i β o wspólnym lewym ramieniu przechodzącym przez znany punkt O, ich prawe ramiona przechodzą odpowiednio przez znane punkty A i B (Rys.3.2.1).
Rys 3.2.1. Klasyczne wcięcie wstecz Rys 3.2.2. Klasyczne wcięcie wstecz z kątem 0 lub π
Punkt wyznaczany P nie powinien leżeć na prostej przechodzącej przez punkty znane O,A; czyli kąt α musi się różnić od 0, 200 i 400 gradów. Szczególny przypadek gdy punkt P leży na prostej OB przedstawia rys 3.2.2. Z obu rysunków wynika, że punkt M jest spodkiem wysokości trójkąta równoramiennego OCP przy czym w pierwszym przypadku prosta OP jest .prostopadła do prostej CD a w drugim pokrywa się z prostą OB
A. Przecięcie okręgów
Miejscem geometrycznym punktów z których widać odcinek OA pod kątem α jest łuk okręgu o środku w punkcie C i promieniu R. Z kropkowanej części rysunku 3.2.1 mamy:
2 R = d/sin(α) /twierdzenie Sneliusa/
h = R*cos(α) = d/2 ctg(α)
δ = π/2 − α (3.2.5)
pod warunkiem ze sin(α) jest różny od zera, co zastrzegaliśmy podczas definiowania klasycznego wcięcia wstecz. Obliczamy
zadanie odwrotne punkt O, punkt A dOA , AOA
odległość dOC= dOA/(2sinα), azymut AOC= AOA + π/2 − α ,
zadanie wprost punkt O, dOC , AOC punkt C
w przypadku pierwszym analogicznie
zadanie odwrotne punkt O, punkt B dOB , AOB
odległość dOD= dOB/(2sinβ), azymut AOD= AOB + π/2 − β ,
zadanie wprost punkt O, dOD , AOD punkt D
zadanie odwrotne punkt C, punkt D dCD , ACD
ACM =ACD
w przypadku drugim
ACM =AOC + π/2
ostatecznie w obu przypadkach
ACP = 2ACM -AOC + π; dCP = dOC
zadanie wprost punkt C, dCP , ACP punkt P
Algorytm 3.2.3. Kątowe wcięcie wstecz punktu P
Kąty zostały pomierzone w punkcie P na punkty O, A, B.
Krok 1. odwrotne(O, A, d1, A1); d3:=0.5*d1/sin(α); A3:=A1+pi/2-α;
wprost(O, d3, A3, C); jeśli sin(β)=0 to Krok 3
Krok 2. odwrotne(O, B, d2, A2); d4:=0.5*d1/sin(α); A4:=A2+pi/2-β;
wprost(O, d4, A4, D); odwrotne(C, D, d5, A5); przejdź do Kroku 4
Krok 3. A5:=A3+pi/2;
Krok 4. A6:=2*A5-A3+pi; wprost(C, d3, A6, P);
B. Układ lokalny
Pokażemy inne rozwiązanie bez wykorzystywania zadań wprost i odwrotnego. W lokalnym układzie ortokartezjańskim zorientowanym odcinkiem OA, poszukiwany środek okręgu C ma współrzędne: d/2 (bieżąca) i h (domiar). Stąd po transformacji
ΔXOC = ΔXOA/d * d/2 - ΔYOA/d * h = 1/2 (ΔXOA-ΔYOA*ctg α)
ΔYOC = ΔYOA/d * d/2 + ΔXOA/d * h = 1/2 (ΔYOA+ΔXOA*ctg α) (3.2.6)
w pierwszym przypadku
wyznaczymy analogicznie środek drugiego okręgu
ΔXOD = 1/2 (ΔXOB-ΔYOB*ctgβ) (3.2.6a)
ΔYOD = 1/2 (ΔYOB+ΔXOB*ctgβ)
i wektor Q=[ΔYCD,-ΔXCD] (3.2.7)
w drugim przypadku wektor Q = OB (3.2.7a)
następnie dla obu przypadków
długość odcinka OM jest rzutem wektora OC na wersor q=Q/|Q|.,
czyli OM = OC q; OM = q OM = q (OC q) = Q (OC Q)/(Q Q) = Q m
i ostatecznie OP = 2m Q
gdzie m=(OC Q)/(Q Q) (3.2.7b)
Uwaga, we wzorach (3.2.6) można pominąć czynnik 1/2 wówczas w wyniku (3.2.7b) również należy pominąć czynnik 2.
Algorytm 3.2.4. Kątowe wcięcie wstecz /rozwiązanie oparte na transformacji/
Krok 1. dXa:=Xa-Xo; dYa:=Ya-Yo; ctg:=cos(α)/sin(α);
dXc:=dXa-dYa*ctg; dYc:=dYa+dXa*ctg;
dXb:=Xb-Xo; dYb:=Yb-Yo; jeśli sin(β)=0 to Krok 3
Krok 2. ctg:=cos(β)/sin(β);
dXd:=dXb-dYb*ctg; dYd:=dYb+dXb*ctg;
dXq:=dYd-dYc; dYq:=dXc-dXd; przejdź do Kroku 4
Krok 3. dXq:=dXb; dYq:=dYb;
Krok 4. m:= (dXc*dXq+dYc*dYq)/ (dXq*dXq+dYq*dYq);
Xp:=Xo+m*dXq; Yp:=Yo+m*dYq;