Лінії великого кола в прямокутній проекції


12

Просто щоб перевірити, що я на правильному шляху:

Чи всі великі кола на кулі і в прямокутній проекції (тобто пара широти, довготи):

  1. меридіани (тобто перехід на полюс до полюса)
  2. форми tan latitude = sin360(longitude + rotation) * amplitude + offset

(з додатковими обмеженнями на комбінації зміщення / амплітуди - очевидно, всі великі колісні контури з амплітудою 0 також мають зміщення 0 - екватор).

Або є шляхи великого кола, які не вписуються в цю схему (знову ж таки, лише в системі координат довготи-широти, а не на інших проекціях карт).

Примітка: я додав tanвищезазначене після публікації запитання, у відповідь на відбійники відмінна відповідь. Виходить, що offsetтоді завжди дорівнює 0.


Форма №2 не є набором пар (широта, довгота). Що це означає? І чому це залежить від трьох параметрів ( rotation, amplitudeі offset), коли великі кола природно мають лише два параметри (кожному відповідає пара діаметрально протилежних точок, "полярних" до нього)?
whuber

Так, одне є зайвим, але формула не готова. Як зазначалося, amplitude==0мається на увазі offset=0; ці два явно поєднані. Дивіться оновлене запитання про відсутніх, latitudeщоб зробити відносини добре сформованими.
Еріх Шуберт

Відповіді:


11

Хоча геодезичні роботи в деяких прогнозах схожі на синусоїди, формула є неправильною.

Ось одна геодезична в прямокутній проекції. Очевидно, що це не синусова хвиля:

введіть тут опис зображення

(Фонове зображення взято з http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg .)

Оскільки всі Еквіректальні проекції є афінними перетвореннями цієї (де x-координата - це довгота, а y-координата - широта), а афінними перетвореннями синусоїд все ще є синусоїда, ми не можемо очікувати будь-якої геодезики в будь-якій формі Рівнокутна проекція - це синусоїдальні хвилі (за винятком екватора, який зображує горизонтальну лінію). Тож почнемо спочатку і опрацюємо правильну формулу.

Нехай рівняння такої геодезики має вигляд

latitude = f(longitude)

для функції f, яку можна знайти. (Цей підхід вже відмовився від меридіанів, які неможливо записати у такій формі, але в іншому випадку є повністю загальним.) Перетворення в трид детерміновані координати (x, y, z) дає

x = cos(l) cos(f(l))
y = sin(l) cos(f(l))
z = sin(f(l))

де l - довгота і припускається одиничний радіус (без втрати загальності). Оскільки геодезика на кулі є перетином з площинами (проходять через її центр), повинен існувати постійний вектор (a, b, c) - який спрямований між полюсами геодезичної - для якого

a x + b y + c z = 0

незалежно від значення l . Розв’язування для f (l) дає

f(l) = ArcTan(-(a cos(l) + b sin(l)) / c)

при умови , з НЕ дорівнює нулю. Очевидно, що коли c наближається до 0, ми отримуємо в межі пари меридіанів, що відрізняються на 180 градусів - саме геодезику, яку ми відмовилися на початку. Так що все добре. До речі, незважаючи на зовнішність, тут використовуються лише два параметри, що дорівнюють a / c та b / c.

Зауважте, що всі геодезики можна обертати до тих пір, поки вони не перетнуть екватор на нульовій градусній довготі. Це вказує на те, що f (l) можна записати через f0 (l-l0), де l0 - довгота екваторіального перетину, а f0 - вираз геодезичного перетину на первинному меридіані. З цього отримуємо еквівалентну формулу

f(l) = ArcTan(gamma * sin(l - l0))

де -180 <= l0 <180 градусів - довгота екваторіального перетину (як геодезика потрапляє до Північної півкулі під час подорожі на схід), а гамма - додатне дійсне число. Сюди не входять пари меридіан. Коли гамма = 0 позначає екватор з початковою точкою на довготі l0; у такому випадку ми завжди можемо приймати l0 = 0, якщо бажаємо унікальної параметризації. Наразі є лише два параметри, задані l0 та гаммою цього разу.


Mathematica 8.0 була використана для створення зображення. Фактично, це створило "динамічну маніпуляцію", при якій можна керувати вектором (a, b, c) і миттєво відображати відповідну геодезичну. (Це досить круто.) Спочатку ми отримуємо фонове зображення:

i = Import[
   "http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/\
    Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg"]

Ось код у повному обсязі:

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]}]

Дякую. Я це arctanдесь загубив . Здогадайтесь, я почав з arctan latitudeдесь.
Еріх Шуберт

Я б хотів, щоб я міг проголосувати за це не раз!
Ян Тертон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.