Eşitgenli projeksiyonda büyük daire çizgileri


12

Sadece doğru yolda olduğumu kontrol etmek için:

Tüm büyük daireler küre üzerinde ve eşit dikdörtgen projeksiyonda mı (yani enlem, boylam çiftleri):

  1. meridyenler (yani direğe direğe gitmek)
  2. şeklinde tan latitude = sin360(longitude + rotation) * amplitude + offset

(ofset / genlik kombinasyonlarında ek kısıtlamalar ile - açıkçası, 0 genlikli tüm büyük daire yollarında da ofset 0 vardır - ekvator).

Veya bu şemaya uymayan büyük daire yolları var mı (yine, diğer harita projeksiyonlarında değil, yalnızca bir boylam enlem koordinat sisteminde).

Not: tanSoruyu gönderdikten sonra yukarıdakileri, mükemmel cevap fısıltılarına bir tepki olarak ekledim. O offsetzaman her zaman 0 olur.


Form # 2 (enlem, boylam) çiftleri kümesi değildir. Bu ne demek? Ve neden büyük daireler doğal olarak sadece iki parametreye sahip olduğunda (her biri kendisine "polar" olan bir çift taban tabana zıt noktaya karşılık gelir) üç parametreye ( rotation, amplitudeve offset) bağlıdır ?
whuber

Evet, biri gereksiz, ama formülü hazır değilim. Belirtildiği amplitude==0gibi offset=0; bu ikisi açık bir şekilde birleşmiştir. latitudeİlişkiyi iyi biçimlendirmek için eksik olanın güncellenmiş sorusuna bakın .
Erich Schubert

Yanıtlar:


11

Jeodezikler bazı projeksiyonlarda sinüs dalgalarına biraz benzese de formül yanlıştır.

İşte Eşitlikli bir izdüşümde bir jeodezik. Açıkçası sinüs dalgası değildir:

resim açıklamasını buraya girin

(Arka plan resmi http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg adresinden alınmıştır .)

Tüm Eşitlikli projeksiyonlar bunun bir afin dönüşümleri (x koordinatının boylam ve y koordinatının enlem olduğu) ve sinüs dalgalarının afin dönüşümleri hala sinüs dalgaları olduğundan, herhangi bir şekilde herhangi bir jeodezik bekleyemeyiz Sinek dalgaları olmak üzere eşkenar dörtgen izdüşüm (yatay çizgi olarak çizilen Ekvator hariç). Öyleyse en baştan başlayalım ve doğru formülü çalışalım.

Böyle bir jeodezik denklemin formda olmasına izin verin

latitude = f(longitude)

f fonksiyonunun bulunması için. (Bu yaklaşım, böyle bir formda yazılamayan, ancak başka türlü tamamen genel olan meridyenlerden vazgeçmiştir.) 3D Kartezyen koordinatlara (x, y, z) dönüştürmek

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

burada l boylamdır ve birim yarıçap varsayılır (herhangi bir genellik kaybı olmadan). Küre üzerindeki jeodezikler, düzlemlerle (merkezinden geçerken) kesişimler olduğundan, jeodezik kutupları arasında yönlendirilen sabit bir vektör (a, b, c) olmalıdır.

a x + b y + c z = 0

l değeri ne olursa olsun . F (l) için çözme

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

ancak şu şartla ki c sıfırdan farklıdır. Açıkçası, c 0'a yaklaştığında, sınırda 180 derece farklı bir çift meridyen elde ederiz - tam olarak başlangıçta terk ettiğimiz jeodezikler. Yani her şey yolunda. Bu arada, görünüşe rağmen, bu a / c ve b / c'ye eşit iki parametre kullanır .

Tüm jeodeziklerin ekvatoru sıfır derece boylamda geçene kadar döndürülebileceğini unutmayın. Bu, f (l) 'in f0 (l-l0) cinsinden yazılabileceğini gösterir; burada l0, ekvator geçişinin boylamıdır ve f0, Prime Meridian'daki bir jeodezik geçişin ifadesidir. Buradan eşdeğer formülü elde ederiz

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

burada -180 <= l0 <180 derece, ekvator geçişinin boylamıdır (jeodezik, doğuya doğru giderken Kuzey Yarımküre'ye girerken) ve gama pozitif bir gerçek sayıdır. Buna meridyen çiftleri dahil değildir. Gama = 0 olduğunda , Ekvator'u l0 boylamında bir başlangıç ​​noktasıyla belirtir; benzersiz bir parametreleştirme istiyorsak her zaman l0 = 0 alabiliriz. Bu sefer l0 ve gamma tarafından verilen sadece iki parametre var .


Görüntüyü oluşturmak için Mathematica 8.0 kullanılmıştır. Aslında, vektörün (a, b, c) kontrol edilebildiği ve karşılık gelen jeodeziklerin anında gösterildiği bir "dinamik manipülasyon" yarattı. (Çok güzel.) İlk önce arka plan resmini elde ediyoruz:

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

İşte kodun tamamı:

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

Teşekkürler. Bunu bir arctanyerlerde kaybettim . Sanırım bir arctan latitudeyerden başladım .
Erich Schubert

Keşke bunu bir kereden fazla oylayabilseydim!
Ian Turton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.