Nesnenin geometri merkezini bulma?


37

2B veya 3B nokta kümesi verilir:

Bir nesnenin geometri merkezini nasıl bulabilirim?

Aşağıdaki şekle göre, en basit formda, yani homojen kütle yoğunluğu olarak hesaplanırsa, geometrinin merkezi kütle merkezinden farklıdır. Sorun, aslında, bunların hesaplanmasında ortaya çıkıyor. Genel olarak, bir yaklaşım, X koordinatlarını ve Y koordinatlarını ayrı ayrı ortalamaya koymaktır, yani verilen noktalara ortalama bir konum bulmak (burada 2B olarak). Bu, bir nesneyi temsil eden nokta kümesi için centroid olarak kullanılabilir. Gösterildiği gibi, alt kenar boyunca kalan tepe noktası nedeniyle, basit bir dikdörtgen için elde edilen centroid (0.5,0.4) iken, doğru cevap (0.5.0.5) olur .
Verilen örneğin çok basit olduğuna dikkat edin. Bununla birlikte ilgilenilen sorun, 2B'deki karmaşık şekiller ve yalnızca köşelerin koordinatlarının bulunduğu 3B'deki nesneler içindir.
BTW, verimli bir hesaplama yolu ilgi çekicidir.

Sadece Wikipedia gibi bazı web bağlantılarını kontrol ettiğimi söylemek gerekirse, şu anki sorunum, bunun için temsili olarak bir nokta bulmak isteyen 2B ve 3B noktaların grubudur. Böylece centroid ilgi çekmeye başladı. Noktalar herhangi bir topolojik bilgi olmadan verilmiştir. Onları nokta bulutu olarak düşünebilirsiniz. Buradaki sunum, genel olarak bilinen koordinat ortalamalarının (örneğin, bu Yığın Taşma Q&A ) ortalamalarının örnekte gösterildiği gibi yanlış olabileceğini açıkça belirtmek için sağlanmıştır .

görüntü tanımını buraya girin

Karşılaştırma için bazı uygulamalar:

  • aa = aşağıdaki cevap kabul edildi
  • chull = noktaların dışbükey gövdesi, yani altın poligon
  • yüzde = Wikipedia önerilen ve tartışılan ağırlık merkezi aa çokgen merkezi olarak
  • centl = ağırlık merkezi poligonun açıklandığı gibi aa

Görsel olarak, centlkarşılaştırıldığında verilen geometri için daha iyi temsilci görünüyor cent. Diğer ikisi de ümit verici görünüyor ancak genel olarak durumların olduğu gibi noktaların dağılması homojen olmadıklarında genellikle çok taraflılar.
Ayrıca, dışbükey gövdesi problemi makul derecede basitleştirse de, uzayda simetrik bir konumlandırma olmadan çok uzun ve çok kısa kenarlar oluşturabildiğini düşünün, yani, her iki durumda da basit bir ortalama alırsanız (yani ağırlıksız) farkındalık gereklidir. : bütün noktalar (yeşil) veya dışbükey gövdeli çokgen köşeleri (mavi).

görüntü tanımını buraya girin

Verilen puan için minimum alan-dikdörtgen bulma bölümünde bir uygulama bulunabilir mi? .


Bu işe yarayacak mı? Bir poligonun merkezini bulmak? (StackOverflow)
blah238

3
Sorunun ne olduğundan emin değilim. Geometri Merkezi veya (genellikle centroid), barycenter'dan (kütle merkezi) farklı olabilir. Bu iyi bilinen bir gerçektir. Ayrıca bir geometrinin merkezini hesaplamanın çeşitli yolları vardır. Bakınız: en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & faculty.evansville.edu/ck6/encyclopedia/ETC.html .
Devdatta Tengshe

1
Güncelleme: topoloji olmadığı zaman, bir nokta bulutu sadece bir nokta bulutu. Poligonal bir kare şekliniz geçerli değildir (ve (0.5.0.4) 'centroid'iniz), bu arada herhangi bir standart formülden ortaya çıkmaz: simetri , karenin herhangi bir merkezi noktasının (0.5 ile çakışacağı) kuvvetle tartışır. , 0.5), nasıl tanımlandığı önemli değildir). İki ve daha fazla boyutta nokta bulutları için temsili veya merkezi yerler bulma hakkında bazı fikirler için lütfen stats.stackexchange.com/questions/1927 adresini ziyaret edin .
whuber

1
@Developer, şu anki noktanızı görüyorum, "dikdörtgenin" altındaki 5. noktanız (aslında bir çokgen), köşe koordinatlarının basit bir ortalaması alınıyor;
blah238

1
Aha! Böyle bir şeyi aramamı rağmen, bu beşinci köşeyi tamamen özledim. Gelecekteki okuyuculara yardım etmek için, bunu vurgulamak için soruda küçük bir düzenleme yaptım. Bu da gerçekten maddenin kalbine ulaşıyor: kenarlara köşeleri eklemek veya silmek bir poly {line, gon} 'nin temsil edilme şeklini değiştirecek , fakat doğuştan geometrik özelliklerinin hesaplanmasını değiştirmemelidir. Bu nedenle, köşelerin barycenter'ı bir poligonun veya sınırlarının barycenters'ı ile neredeyse keyfi bir ilişkiye sahip olabilir.
whuber

Yanıtlar:


44

Her çokgen, en azından dört farklı “merkeze” sahiptir:

  • Köşelerinin barycenter.

  • Kenarlarının barycenter.

  • Bir çokgen olarak barycenter.

  • Etiketleme için yararlı bir CBS'ye özgü "merkez" (genellikle belgelenmemiş tescilli yöntemlerle hesaplanır).

(Özel durumlarda tesadüfen çakışabilirler, ancak "genel" çokgenler için ayrı noktalardır.)

Genel olarak "barycenter", "kütle merkezi" dir. Üç tür, kütlenin bulunduğu yerin bulunduğu yere göre farklılık gösterir: ya tamamen köşeler üzerindedir, kenarlara düzgün bir şekilde yayılır ya da çokgen boyunca eşit bir şekilde yayılır.

Her üç bariyerin de hesaplanması için basit yöntemler mevcuttur. Bir yaklaşım , iki kütlenin ayrık birlikteliğinin barycenter'ının, barycenters'ın toplam kütle ağırlıklı ortalaması olduğu temel gerçeğine dayanmaktadır . Bundan kolayca aşağıdakileri elde ederiz:

  1. İki (eşit ağırlıklı) tepe noktasının barycenter'ı ortalamalarıdır. Bu, koordinatlarını ayrı ayrı ortalama alarak elde edilir. Geometrik olarak, iki köşeyi birleştiren çizgi bölümünün orta noktasıdır.

  2. İndüktif olarak, n (eşit ağırlıklı) tepe noktalarının barycenterları, koordinatlarının ayrı ayrı ortalaması alınarak elde edilir.

  3. Bir çizgi segmentinin barycenter'ı orta noktasıdır. (Bu simetriyle açıktır.)

  4. Bir poligonun barycenter'ı, her bir çizgi parçasının orta noktalarını bulmak ve sonra da segment uzunluklarını ağırlık olarak kullanarak ağırlıklı ortalamalarını oluşturmak suretiyle elde edilir.

    Örneğin, (0,0), (6,0), (6,12) noktalarıyla gösterilen "L" şeklini göz önünde bulundurun. İki bölüm vardır: (6 + 6) / () (0 + 0) / 2, (0 + 6) / 2) = (3,0) orta noktası olan bir uzunluk 6 ve ((6 + 6) / 2, (0 + 12) / 2) = (6,6). Bu nedenle uzunluk ağırlıklı ortalama koordinatları (x, y) ile

    x = (6*3 + 12*6) / (6+12) = 5,  y = (6*0 + 12*6) / (6+12) = 4.
    

    Bu, ((0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4) olan üç köşenin barycenter'ından farklıdır.

    ( Düzenleme Başka bir örnek olarak, soru şeklinde, kare şeklinde olmasına rağmen, (0,0), (1 / 2,0), (1,0) noktalarının belirlediği bir pentagon olarak temsil edilen rakamı düşünün , (1,1), (0,1) Beş tarafın uzunlukları 1/2, 1/2, 1, 1, 1 ve orta noktalara sahiptir (1 / 4,0), (3 / 4,0), (1) , 1/2), (1 / 2,1) ve (0,1 / 2) sırasıyla, ortalama ortalamaları eşittir

    [(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
    = (2/4, 2/4) = (0.5, 0.5)
    

    İnsanın umduğu gibi, sadece tepe noktalarının barycenter'ı (yukarıda # 2 ile hesaplanan) olmasına rağmen (0.5, 0.4).)

  5. Bir poligonun barycenter'ı, üçgenlere ayrıştırmak için üçgenleme ile elde edilebilir. Bir üçgen-qua-poligonun barycenter'ı, köşelerinin barycenter'ı ile çakışmaktadır. Bu bariyerlerin alan ağırlıklı ortalaması, poligonun bariyer merkezidir. Üçgen alanlar, köşe koordinatları bakımından (örneğin, iki tarafın kama ürünü açısından) kolayca hesaplanır . İmzalanmış (pozitif veya negatif) alanlardan nasıl yararlanılacağı dahil, bu alan hesaplamaları için, (eski) ders notları sayfamdaki "Alan" bölümüne bakın .

    ( Düzenleme Örneğin, soruda gösterilen çokgeni göz önünde bulundurun. Soldaki üçgenleri ((0,0), (1 / 2,0), (0,1)) ile üçgenleyebiliriz, ((0,1), (1 / 2,0), (1,1)) ortada ve ((1,1), (1,0), (1 / 2,0)) sağda, alanları 1/4 Sırasıyla 1/2, 1/4 ve uçları - ortalamalarının ortalaması alınarak elde edilen - (1 / 6,1 / 3), (1 / 2,2 / 3) ve (5 / 6,1 / 3), sırasıyla, bu bariyerlerin alan ağırlıklı ortalaması eşittir.

    [(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
    = (12/24, 6/12)
    = (0.5, 0.5)
    

    olması gerektiği gibi, alt kenar boyunca bu beşinci tepe noktasının varlığına rağmen.)

Bu yöntemlerin her birinin etkili olduğu açıktır : her adımda (oldukça az) sabit zaman kullanarak poligonun "spagetti" gösterimi üzerinde yalnızca tek bir geçiş yapılmasını gerektirir. Birincisi (saf köşelerin dışında kalan) dışındaki tüm durumlarda, yalnızca bir köşe koordinatları listesinden daha fazla bilgiye ihtiyaç duyulduğunu unutmayın: şeklin topolojisini de bilmeniz gerekir. "L" örneğinde, örneğin (0,0) 'ın (6,0)' ya bağlı olduğunu (6,12) bilmemiz gerekiyordu.

Bunların hepsi Öklid kavramları. Küreye (veya elipsoid) çeşitli şekillerde uzatılabilirler. Basit bir özellik, özellikleri üç (Öklid) boyutta basit bir kompleks olarak görür, uygun barycenter'ı hesaplar ve daha sonra onu elipsoidin merkezinden tekrar yüzeye çıkarır. Bu yeni bir kavram veya formül gerektirmez; ilk iki koordinatın yanı sıra yalnızca üçüncü bir (z) koordinatla çalışmanız gerekir. (Alanlar hala kama ürün uzunluğu kullanılarak bulunur.)

Bir başka genelleme ise, Pythagoras'a göre kare toplamın kökü olan Öklid metriğinin p> = 1 için diğer Lp metriklerine değiştirilebileceğini kabul eder : pth güçlerinin toplamının kök kökenini alırsınız. Uygun “barycenters” bulmak artık o kadar basit değil, çünkü yukarıda kullanılan güzel katkı özellikleri (baryenterler bir şeklin daha basit kısımlarının barycenterlarının ağırlıklı ortalamalarıdır) artık genel olarak geçerli değil. Çoğu zaman, yinelemeli yaklaşık sayısal çözümler elde edilmelidir. Benzersiz bile olmayabilirler.

Çeşitli amaçlar için ek merkezler tanımlanabilir . Üçgenlerin çokgenlere genellenebilecek (bir şekilde) birçok farklı merkezi vardır: daire çevresinin merkezi, (bazıları) maksimum eğrinin merkezi, minimum alan sınırlayıcı elipsin merkezi ve diğerleri. Herhangi bir set, dışbükey gövde gibi çeşitli "gövdelere" ve elde edilen gövdelerin merkezlerine yerleştirilebilir.

Bu "merkezlerin" çoğunun mutlaka bir poligonun içinde yer almadığını unutmayın. (Herhangi bir makul dışbükey poligonun merkezi olsa da, iç kısmında yatar.)

Bu çeşitli yaklaşımlar ve çözümler, birinin “geometri merkezi” veya sadece “merkez” gibi genel bir terime karşı dikkatli olması gerektiğini gösterir: hemen hemen her şey olabilir.


Topluluğa: 'Whuber'dan gelen böyle iyi bir cevap, sadece iyi bir soru için beklenebilir, çünkü tercihine aşina olduğum gibi, bu yüzden, eğer ilginç bulursanız herkesin soruyu yukarı oylamayı düşünür müsünüz;)
Geliştirici

Bazı durumlarda yararlı buldum, başkalarına cevap vermek için motivasyon olarak başkalarına vermek istiyorum. Bunu şimdiye kadar kabul edilebilir bir yapıcı cevap olarak işaretliyorum.
Geliştirici

Neden alanların hala bir küre üzerinde kama ürünleri kullanarak bulunduğunu açıklayabilir misiniz ? Küresel üçgen alan daha uygun olmaz mıydı? Bulduğum en yakın referans (bu mükemmel cevabın dışında!): Jennessent.com/downloads/Graphics_Shapes_Online.pdf - küresel üçgen alanlarını kullanır.
Jason Davies

@ Jason Ben merak ediyorum: küresel özelliklerin barycenters hesaplamak için küresel üçgen alanları kullanarak nasıl önerirsiniz ?
whuber

@whuber Küresel poligon, küresel üçgenlere ayrıştırılır ve her üçgenin barycenter, köşelerinin Kartezyen koordinatlarının ortalaması alınarak hesaplanır. Poligon barycenter'ın, bu üçgenin ağırlıklı ortalaması olduğunu ileri sürüyorum, burada ağırlık, küresel üçgen alandır, cevabınızda önerdiğiniz düzlemsel alan değil (kama ürününü doğru anladığımı varsayarak).
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.