Dünya yüzeyinde bir çizgi verildiğinde, ona dik bir çizgiyi nasıl çizebilirim?


9

Dünya yüzeyinde bir çizgi verildiğinde, ona dik bir çizgiyi nasıl çizebilirim?

Bu çok basit bir soru ise özür dileriz. Bunun basit bir görev olacağını düşündüm, ama bunun sezgisel olduğunu kanıtlıyor.

Aşağıdaki şekilde mavi çizgiyle başlıyorum (bkz. Bağlantı - Henüz rakam yükleyemiyorum). Mavi çizginin (m) gradyanını hesaplayıp daha sonra -1 / m gradyanı ile başka bir çizgi (yeşil) çizerek dikey bir çizgi buldum. Matlab'daki çizgileri ('plot' ve 'axis eşit' kullanarak) çizdiğimde, beklendiği gibi dik görünüyorlar.

http://imgur.com/7qMkx

Ancak, bu satırları Google Earth'e dışa aktardığımda (KML Araç Kutusu'nu kullanarak), artık dikey görünmüyorlar (aşağıdaki bağlantıya bakın; kısa çizgi, önceki şekildeki mavi çizgidir).

http://imgur.com/ncJQ7

Kavisli yüzeylerde garip şeyler olduğunu anlıyorum, ancak çizgilerin en azından yerel olarak dik görünmesi gerektiğini düşündüm. Bunun Google Earth'teki izdüşümle bir ilgisi olduğundan şüpheleniyorum - özellikle ızgara hücrelerinin kabaca benzer yan uzunluklara sahip olduğu görülüyor, ancak uzunlamasına kenarın uzunluğu = 1 derece, enlem kenarının uzunluğu = 0.5 derecesi.

Özet olarak:

  • bir yüzeyde dikey bir çizgi bulma yöntemim geçerli mi? (yani, -1 / m gradyanlı bir çizgi çizme)
  • Google Earth resminde, dikey çizgiler beklendiği gibi mi görünüyor yoksa garip bir şey mi oluyor?

GÜNCELLEME:

Daha fazla bağlam sağlamak için: Bir uçaktan alınan radar verilerine bakıyorum. Çok renkli alan, gözlemlerin kaydedildiği 'alan' dır. Yukarıdaki açıklamada başladığım mavi çizgi, namluya paralel: bu, uçağın uçuş hattı (uçak kabaca güney-batı yönünde hareket ediyordu). Radar, soldaki uçuş hattına dik yönde bakar. Uçuş hattına dik bir çizgi çizmeye çalışıyorum; bu radarın baktığı yön olmalı ve namluyu düzgünce kesmelidir. Gördüğünüz gibi, durum böyle değil.

resim açıklamasını buraya girin


2
Aslında, Google açıyı doğru bir şekilde tasvir ederken, Matlab
planınız

Cevabınız için teşekkürler, whuber. Bu, hesapladığım çizginin aslında orijinaline dik olmadığı anlamına mı geliyor? Yoksa bu, Matlab'daki çizgilere bakmamın bir şekilde yanlış olduğu anlamına mı geliyor? Matlab'da 'eksen eşitliği' komutunu, çizgilerin dik olduğuna kendimi ikna etmek için kullandım, ancak bunun dünyanın eğriliğini düzgün bir şekilde temsil etmeyeceğini umuyorum.
Paul Keating

2
İlk yorumun doğru, Paul. Kartezyen koordinatlar gibi (lon, lat) kullanmak, yönleri o kadar büyük bir şekilde bozar ki, çoğu açı görünür şekilde bozulur. Bu nedenle, Kartezyen formül -1 / m'yi kullanmak, birkaç şanslı yön dışında (veya Ekvator'da) sizi doğru bir açıya yakınlaştırmaz. Alternatif bir yöntem sağlamak için, ne tür bir "çizgi" istediğinizi (örneğin, jeodezik ya da oluklu çizgi), onu çizmedeki amacınızı ve ne kadar olması gerektiğini bilmek yardımcı olacaktır. (Kısa uzunluklar basit yaklaşımların kullanılmasına izin verir.)
whuber

2
BTW, konformal projeksiyonlar hakkında sitemizdeki bazı konuları okuyarak bu konular hakkında çok şey öğrenebilirsiniz .
whuber

Çok teşekkürler, whuber. Çok ilginç. Yukarıda sorun tanımında daha fazla bağlam sağladım. İhtiyacım olan uzunluk nispeten kısadır (yukarıda gösterilen alanın genişliği, bir derecenin onda biri), bu nedenle geçerli yaklaşımlarla ilgili herhangi bir öneri çok takdir edilecektir. Bağlantı için de teşekkürler - kontrol edeceğim.
Paul Keating

Yanıtlar:


10

Zarif bir ilke basit bir cevap sağlar:

Düzgün kavisli bir yüzeydeki tüm noktalar yeterince büyük bir ölçekte düzdür.

Bu, koordinatların afin değişiminden sonra (genellikle sadece bir tanesinin yeniden ölçeklendirilmesini içerir), mesafeleri hesaplamak için Pisagor Teoremi ve dikleri bulmak için negatif-karşılıklı eğim formülü gibi Öklid geometrisinin formüllerini kullanabileceğimiz anlamına gelir.

Küredeki enlem ve boylam koordinatları ile (boylamın tekil hale geldiği kutuplardan uzakta), tek yapmamız gereken tek şey kutuplara yaklaştıkça bir boylamın büzülme uzunluğunu yansıtmak için doğu-batı yönünü yeniden ölçeklendirmektir. Dünyanın küresel bir modeliyle, bu büzülme enlem kosinüsü tarafından verilir. Bu sadece arsanın en-boy oranında bir değişiklik, başka bir şey değil.

Bu, kuzey-güneyde birkaç derece enlemden fazla olmayan ve her iki direğe yaklaşmayan bölgeler için de geçerlidir.

Bu nedenle, tek yapmanız gereken :

  1. Tüm boylamları tipik bir enlemin kosinüsü ile çarpın.

  2. Dikey çizgiyi hesaplayın.

  3. Koordinat ayarını geri alın.

Örneğin, düzlemin parkurunun (lon, lat) = (-78, 40) ila (-79, 41) arasında olduğunu varsayalım. 40 ila 41 arasında, örneğin 40.5 gibi uzanmak için tipik bir enlem alabiliriz.

Adım 1 Ayarlanan koordinatlar (-78 * cos (40.5), 40) = (-59.31167, 40) ve (-79 * cos (40.5), 41) = (-60.07207, 41) şeklindedir.

Adım 2 Soru bunu negatif-karşılıklı eğim yöntemi kullanarak yapmayı önermektedir. Bu doğru olurdu, ancak bazı durumlarda başarısız olacaktır (eğimin sonsuz olduğu yerlerde). Vektör aritmetiğini kullanmak daha genel ve daha güçlüdür. Hesaplama nasıl yapılır.

Uçuş yolunun yön vektörü, başından sonuna kadar yer değiştirmedir,

v =  (-60.07207, 41) - (-59.31167, 40)
  =  (-0.7604, 1.0).

Herhangi bir vektörün (x, y) saat yönünde sağa çevrilmesi, (y, -x) üretir, sağa dikey bir yön

w = (1.0, 0.7604).

Pisagor Teoremine göre, bu vektörün uzunluğu, katsayılarının karelerinin toplamının kare köküdür,

|w| = sqrt(1^2 + 0.7604^2) = 1.256268

Diyelim ki, bu vektör boyunca uçak uçuşunun başlangıç ​​noktasından 0,2 derece hareket edelim. Başlangıç ​​(-59.31167, 40) ve yer değiştirme 0.2 / | w | kez w, biten

(-59.31167, 40) + 0.2 / 1.256268 * (1.0, 0.7604) = (-59.15247  40.12106).

Adım 3 Ayarlamayı geri almak için, sonuçta ortaya çıkan noktaların ilk koordinatlarını Adım 1'de kullanılan kosinüs ile bölün:

(-59.15247/cos(40.5), 40.12106) = (-77.79064, 40.12106)

Bu noktaları 1: 1 en boy oranını kullanarak çizerseniz, açı dik açı yerine geniş görünür. Ancak en boy oranını 1: cos (40.5) (yaklaşık 4: 3) olarak değiştirirseniz, açı 90 derece olarak görünecektir. Noktaları Google'ın Mercator'ı da dahil olmak üzere herhangi bir uyumlu projeksiyon kullanarak çizdiğinizde açı da doğru olacaktır.


2
Bu harika, daha çok. Çok teşekkürler. Nerede yanlış yaptığımın ve sorunu nasıl çözebileceğimin çok açık bir açıklaması. Dik çizgiyi elde etmek için Matlab'ın 'azimut' ve 'hesaplaşma' işlevlerini kullandım, ancak bunun nasıl yapılacağına dair daha ayrıntılı, ilk ilkelerin açıklamasını görmek güzel. Çok teşekkürler.
Paul Keating
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.