Küresel çokgen sentroidin hesaplanması


11

Bir küredeki çokgenler için sentroidleri hesaplamanın genel bir yolunu istiyorum.

Şimdiye kadar, en iyi çevrimiçi referans şöyledir:

Grafikler ve Şekiller için Araçlar Jeff Jenness.

Burada açıklanan yöntem, çokgenin çoklu küresel üçgenlere ayrılmasını ve küresel üçgen alanı ile ağırlıklandırılmış küresel üçgen sentroidlerinin ortalamasını hesaplamayı önerir.

Küresel bir çokgen sentroid tanımlamanın birkaç yolu olduğunu biliyorum, ancak noktalar ve çoklu çizgiler için aşağıdaki tanımlara benzer bir şey arıyorum:

  • Noktalar : noktaları temsil eden Kartezyen vektörlerin aritmetik ortalaması.
  • Çoklu çizgiler: her bir segmentin orta noktalarını temsil eden, her bir segmentin (küresel) uzunluğuna göre ağırlıklandırılmış Kartezyen vektörlerin ağırlıklı ortalaması.

Üçgen ayrışmanın ağırlıklı ortalaması olarak tanımlanan , poligon centroidlerin alana göre ağırlıklandırılmış olması makul bir şekilde devam etmektedir .

Benim sorum yukarıdaki referanstaki yöntemin kullanılan üçgen ayrışmasından bağımsız olarak çalışıp çalışmayacağıdır. Özellikle, bazı üçgenlerin negatif ağırlığa katkıda bulunan negatif alanlara sahip olacağı şekilde, çokgenin dışında bile keyfi bir noktaya göre üçgenlere ayrışmasından bahseder.

İlgili: Bir nesnenin geometri merkezi nasıl bulunur?

Yanıtlar:


9

Tüm üçgenlemeleri tek bir sabit noktaya göre gerçekleştirseniz bile tutarlı olarak çalışmaz . Sorun şu ki, küresel ve Öklid hesaplamaları, ne anlama geldiklerine bakılmaksızın karıştırılıyor.

Bunu açık hale getirmenin bir yolu, bir yarım kürenin neredeyse yarısı gibi oldukça aşırı bir üçgeni düşünmektir. Örneğin, (lon, lat) = (-179, 0) 'dan başlayarak, ekvator boyunca (0, 0)' a, ardından (0, 90) 'da kuzey kutbuna kadar, ardından (- 179, 0). Bu, batı yarımkürenin kuzey yarısının çoğunu içeren 90-179-90 bir üçgendir. Sorun, uç noktalarının (şekilde beyaz noktalar olarak gösterilmiştir) pratik olarak bir düzlemde yatmasıdır: biri direğe ve diğer ikisi neredeyse zıt taraftadır. Bu nedenle, küreye (kırmızı nokta) yansıtılan ortalamaları neredeyse direğe yakındır - ancak bu , herhangi bir makul merkezden elde edilebilecek kadar uzaktır :

Büyük küresel üçgen

Başka bir örnek olarak, merkezi, Kuzey Kutbu'na göre üst yarıküreyi temsil eden bir çokgeni üçgenleyelim. Batı yarımküreyi her zaman iki eşit yarıya böleriz, her biri 90-90-90 üçgen (böylece büyük, yarımküreyi kapsayan üçgenlerle ilgili herhangi bir sorundan kaçınırız). Bununla birlikte, Doğu yarımküre n eşit yarı lüne bölünecektir . Lune k köşelerinin ( k = 1, 2, ..., n ) (lon, lat) koordinatları vardır

((k-1) * 180/n, 0),  (k * 180/n, 0),  (k * 180/n, 90).

Lunes için k = 8

Bu şekil k = 8 kurulumunu göstermektedir. Kırmızı noktalar, "Grafikler ve Şekiller için Araçlar" belgesine, s. 65-67'ye göre hesaplanan bağımsız üçgen "merkezlerdir".

Hesaplamaları yaparken, k = 2 ile, alan ağırlıklı merkezin gerçekten Kuzey Kutbu'nda olduğunu (simetri hususlarıyla belirtildiği gibi), ancak n arttıkça, sonucun hızla Batı yarımküreye kaydığını ve -90 derece boylam boyunca 89.556 derece enlemine yaklaşır. Bu, Kuzey Kutbunun kendisinin yaklaşık 50 kilometre güneyinde.

Kuşkusuz, 20.000 kilometrelik bir çokgen için +/- 50 kilometrelik bir hata küçüktür; bu durumda farklı üçgenleme nedeniyle toplam keyfi varyasyon miktarı sadece% 0.5'tir. Göreceli hatalar, negatif üçgenler dahil edilerek keyfi olarak büyük yapılabilir (sadece küçük bir üçgene göre gerçekten büyük üçgenler ekleyin ve çıkarın). Ne olursa olsun, açıkça küresel hesaplamalar yapmak için çabalayan herkes projeksiyon hatalarından kaçınmaya çalışıyor, bu yüzden yüksek doğruluk arıyorlar. Bu nirengi yöntemi önerilemez.


Hataların büyük n için birikebileceğini gösterdiniz, ancak yaklaşımın mutlaka kusurlu olduğu açık değil. Sınırlayıcı değere ulaşmak için n değerini kullandınız?
Jason Davies

Ayrıca, hesaplamaları yaptığınız ve buna derinlemesine baktığınız için çok teşekkürler. Sorunu dinlendirmeden önce biraz daha açıklama yapmak istiyorum. :)
Jason Davies

Jason, sana biraz sezgi vermek için bir ön örnek ekledim. Limite hızla yaklaşılır; birkaç düzine lune size birkaç önemli basamak verecektir. Ancak yeni örnek, bu ağırlıklı üçgenlemenin makul bir şey yaptığına dair herhangi bir şüphe uyandırmalıdır - ilk başta tahmin edilen koordinatlarda hesaplamaları yapmaktan çok daha iyi olduğunuz küçük üçgenler hariç. Küresel hesaplamalar yapmanın tek nedeni, analiz alanınızın gerçekten küresel olduğu, çünkü tüm projeksiyonlar çok fazla çarpıtma yaratır.
whuber

1
Harika, teşekkürler. Doğru anlarsam, Kartezyen vektörlerin ortalamasını almak küresel bir üçgen için makul bir sentroid ile sonuçlanmaz (özellikle ilk örneğiniz gibi büyük olanlar). Büyük daire medyanlarının kesişim noktasını bulmak gibi daha iyi yöntemleri araştıracağım.
Jason Davies

BTW, hala yukarıdaki alana benzer küresel alan ağırlıklı bir centroidin işe yarayacağını umuyorum. Kürenin kökenine bir tepe noktası ekleyerek her çokgene bir 3D hacmi verildiğini düşünün. Daha sonra küreyi, kökenine bağlı görünmez bir ip ile askıya alın ve sabit bir denge bulun. Centroid en alttaki noktadır (kütle merkezinin küresel yüzeye izdüşümüdür). Bu, belirsiz bir nokta seçebileceğim, ekvatorun etrafında dönen bir şerit gibi birkaç belirsiz durumdan ayrı olarak çalışmalıdır. Buna değer olduğunu düşünüyorsanız yeni bir soruda tartışmaktan mutluluk duyarız.
Jason Davies

3

Bir çokgenin sentroidinin sahip olması gereken özellikleri numaralandırmak iyi bir fikirdir. İşte benim kriterlerim:

(a) Çokgen iç mekanın bir özelliği (köşeler veya kenarlar yerine). Bu nedenle, ek bir köşe ekleyerek bir kenarı ikiye bölmek, sentroidin pozisyonunu değiştirmemelidir. Jenness'in sentroid tanımının bu kriterde başarısız olduğuna dikkat edin , çünkü sentroidin pozisyonu bir çokgenin üçgenlere nasıl bölündüğüne bağlı olacaktır.

(b) Çokgenin şeklini biraz bozmak, sentroidi biraz hareket ettirmelidir. Burada, çokgenin genel kapsamı üzerinde bir kısıtlama uygulamak gereklidir (örneğin, tek bir yarımküreye). Bu kısıtlama olmadan, sentroidin aniden dünyanın bir yanına hafif bir tepe hareketi ile sallanacağı durumlar oluşturmak kolaydır. Bu durum, sentroidin çokgenin içinde kalmasını gerektiren yöntemleri hariç tutar.

(c) Küçük çokgenler için sentroidin düzlemsel tanımına indirilmelidir.

İşte bu kriterleri karşılayan iki yaklaşım:

(1) Üç boyutta elipsoidal poligon için sentroid hesaplayın ve elipsoid yüzeye geri (elipsoide normal bir şekilde) yansıtın. Büyük avantaj: Centroid, çokgeni daha basit şekillere bölerek hesaplanabilir.

(2) Centroid, çokgenin iç kısmındaki tüm noktalara minimum RMS jeodezik mesafeye sahip noktadır. Bkz. Buss ve Fillmore, "Küresel Ortalamalar ve Küresel Splinelara ve İnterpolasyona Uygulamalar", Grafik 20 , 95–126 (2001) ACM İşlemleri . Büyük avantaj: Elde edilen noktalı yüzey R gömülü nasıl bağımlı değildir 3 .

Ne yazık ki, bu tanımların hiçbiri uygulamaya koymak için açık değildir. Bununla birlikte , ilk yöntem sadece bir küre için gerçekleştirilebilir. Kullanılacak en iyi "temel" alan, çokgenin bir kenarı ile sınırlanan dörtgen, kenarın uç noktalarından iki meridyen ve ekvatordur. Tüm çokgenin sonucu, kenarlar üzerindeki katkıların toplanmasını gerektirir. (Çokgen bir kutbu çevreliyorsa ek adımlar atılmalıdır.)

Kenarın uç noktalarının (φ 1 , λ 1 ) ve (φ 2 , λ 2 ) olduğunu varsayalım . Kenarın ve uç noktaların azimutlarını α 1 ve α 2 ile bırakın . Kürenin yarıçapının 1 olduğu varsayıldığında, dörtgen alanın

  A = α 2 - α 1
      = 2 tan −1 [tan ½ (λ 2 - λ 1 ) sin ½ (φ 2 + φ 1 ) / cos ½ (φ 2 + φ 1 )]

(Bölgenin bu formülü, Bessel'a bağlı olarak, yaygın olarak kullanılan L'Huilier'in bir üçgen alanının formülüne göre sayısal olarak daha iyi davranır.)

Bu dörtgen için centroidin bileşenleri tarafından verilir

  2 birx ⟩ = φ 2 sin (λ 2 - λ 0 ) - φ 1 sin (λ 1 - λ 0 )
  2 biry ⟩ = cos α 02 - σ 1 ) - (φ 2 cos (λ 2 - λ 0 ) - φ 1 cos (λ 1 - λ 0 ))
  2 birz ⟩ = (λ 2 - λ 1 ) - α sin 02 - σ1 )

burada σ 2 - σ 1 kenar uzunluğudur ve λ 0 ve α 0 ekvatordan geçtiği kenarın boylamı ve azimutudur ve x ve y eksenleri ekvator geçişi x = olacak şekilde yönlendirilir 1, y = 0. ( z , elbette direğin içinden geçen eksendir.)


Jenness'in sentroidlerinin pozisyonunun neden bir çokgenin üçgenlere nasıl bölündüğüne bağlı olduğunu açıklayabilir misiniz? @ Whuber'ın örneğinden Jenness'in centroid hesaplamasının küresel üçgenler için yanlış olduğunu biliyorum, ancak bunun yerine küresel üçgen medyanlara dayanan bir centroid kullanılırsa? Bu hala başarısız olacak mı?
Jason Davies

Jenness, küresel çokgeni bir dizi düzlemsel üçgenle etkili bir şekilde değiştirir ve sentroidlerini hesaplar. Açıkça (?), Sonuç bölümlere bağlı olacaktır. Küresel üçgenlerin sentroidlerini kullanarak özetlediğim hesaplamayı yapmak gayet iyi. Centroid formülünü JE Brock, Küresel Üçgen için Atalet Tensörü
cffk

Brock'un gazetesine bir kez daha baktım. Küresel bir üçgenin kütle merkezi formülü, üçgenin kenarları üzerinde bir toplamı içerir. Bu nedenle, bir çokgene başvurmak önemsiz bir şekilde genelleştirilebilir (onu üçgenlere bölmeye gerek kalmadan).
cffk

Bessel'e bağlı alan hesaplaması için de bir referans sağlamayı düşünüyor musunuz? Hiçbir yerde bulamıyorum ve hızlı (ve doğru) küresel çokgen alan rutin yazmakla ilgileniyorum. Teşekkürler!
Jason Davies

Onu buldum ve İngilizceye çevirdiğini anladım, bu yüzden teşekkür ederim. :)
Jason Davies
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.