Chociaż w niektórych rzutach geodezja wygląda trochę jak fale sinusoidalne, formuła jest niepoprawna.
Oto jedna geodezyjna w rzucie w kształcie prostokąta. Oczywiście nie jest to fala sinusoidalna:
(Zdjęcie tła pochodzi z http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg .)
Ponieważ wszystkie rzuty w kształcie prostokąta są przekształceniami afinicznymi tego (gdzie współrzędna x jest długością, a współrzędna y jest szerokością), a przekształcenia afiniczne fal sinusoidalnych są nadal falami sinusoidalnymi, nie możemy spodziewać się żadnych geodezji w jakiejkolwiek formie Rzut prostokątny ma być sinusoidą (z wyjątkiem równika, który wykreśla się jako linia pozioma). Zacznijmy więc od początku i opracujmy prawidłową formułę.
Niech równanie takiej geodezyjnej ma postać
latitude = f(longitude)
aby znaleźć funkcję f . (Podejście to już zrezygnowało z południków, których nie można zapisać w takiej formie, ale poza tym jest w pełni ogólne.) Konwersja na współrzędne kartezjańskie 3D (x, y, z) daje
x = cos(l) cos(f(l))
y = sin(l) cos(f(l))
z = sin(f(l))
gdzie l jest długością geograficzną i przyjmuje się promień jednostki (bez utraty ogólności). Ponieważ geodezja na kuli jest przecięciem z płaszczyznami (przechodzącymi przez jej środek), musi istnieć stały wektor (a, b, c) - który jest skierowany między biegunami geodezyjnymi - dla których
a x + b y + c z = 0
bez względu na wartość l . Rozwiązanie dla f (l) daje
f(l) = ArcTan(-(a cos(l) + b sin(l)) / c)
pod warunkiem, że c jest niezerowe. Oczywiście, gdy c zbliża się do 0, otrzymujemy w limicie parę południków różniących się o 180 stopni - właśnie geodezję, którą porzuciliśmy na początku. Więc wszystko jest dobrze. Nawiasem mówiąc, wbrew pozorom wykorzystuje to tylko dwa parametry równe a / c i b / c.
Zauważ, że wszystkie elementy geodezyjne można obracać, dopóki nie przekroczą równika na zerowej długości geograficznej. Wskazuje to, że f (l) można zapisać w kategoriach f0 (l-10), gdzie l0 jest długością przejścia równikowego, a f0 jest wyrażeniem przejścia geodezyjnego na południku zerowym. Z tego otrzymujemy równoważną formułę
f(l) = ArcTan(gamma * sin(l - l0))
gdzie -180 <= 10 <180 stopni to długość geograficzna przejścia równikowego (gdy geodezyjna wchodzi na półkulę północną podczas podróży na wschód), a gamma jest dodatnią liczbą rzeczywistą. Nie obejmuje to par południków. Gdy gamma = 0 oznacza równik z punktem początkowym na długości 10; w takim przypadku zawsze możemy przyjąć wartość l0 = 0, jeśli chcemy unikalnej parametryzacji. Są jeszcze tylko dwa parametry, podane tym razem przez L0 i gamma .
Do stworzenia obrazu użyto Mathematica 8.0. W rzeczywistości stworzył „manipulację dynamiczną”, w której wektor (a, b, c) może być kontrolowany, a odpowiednia geodezyjna jest natychmiast wyświetlana. (To całkiem fajne.) Najpierw otrzymujemy obraz tła:
i = Import[
"http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/\
Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg"]
Oto kod w całości:
Manipulate[
{a, b, c} = {Cos[u] Cos[v], Sin[u] Cos[v], Sin[v]};
Show[Graphics[{Texture[i],
Polygon[{{-\[Pi], -\[Pi]/2}, {\[Pi], -\[Pi]/2}, {\[Pi], \[Pi]/2}, {-\[Pi], \[Pi]/2}},
VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}],
Plot[ArcTan[(a Cos[\[Lambda]] + b Sin[\[Lambda]]) / (-c)], {\[Lambda], -\[Pi], \[Pi]},
PlotRange -> {Automatic, {-\[Pi]/2, \[Pi]/2}}, PlotStyle -> {Thick, Red}]],
{u, 0, 2 \[Pi]}, {v, -\[Pi]/2, \[Pi]}]
rotation
,amplitude
ioffset
), kiedy wielkie koła mają naturalnie tylko dwa parametry (każdy odpowiada parze diametralnie przeciwnych punktów, które są do niego „biegunowe”)?