Calvin'in Hobileri'ne meydan okuma fikrimi doğru yöne sokmak için teşekkür eder.
Düzlemde, siteler diyeceğimiz bir nokta kümesi düşünün ve her bir site ile bir renk ilişkilendirin. Artık her bir noktayı en yakın sitenin rengiyle boyayarak tüm uçağı boyayabilirsiniz. Buna Voronoi haritası (veya Voronoi diyagramı ) denir . Prensip olarak, Voronoi haritaları herhangi bir mesafe ölçümü için tanımlanabilir, ancak basitçe normal Öklid mesafesini kullanacağız r = √(x² + y²)
. ( Not: Bu zorlukla mücadele etmek için bunlardan birinin nasıl hesaplanacağını ve oluşturulacağını bilmek zorunda değilsiniz.)
İşte 100 siteye bir örnek:
Herhangi bir hücreye bakarsanız, o hücre içindeki tüm noktalar ilgili bölgeye diğer bölgelere göre daha yakındır.
Göreviniz, bu tür bir Voronoi haritasıyla verilen bir görüntüye yaklaşmak. Görüntüye herhangi bir uygun raster grafik biçiminde ve tamsayı N de verilir . Daha sonra en fazla N site ve her bir site için bir renk üretmelisiniz , öyle ki bu siteleri temel alan Voronoi haritası giriş görüntüsünü mümkün olduğu kadar benzemektedir.
Çıktınızdan bir Voronoi haritası oluşturmak için bu zorluğun altındaki Stack Snippet'i kullanabilir ya da isterseniz kendiniz oluşturabilirsiniz.
Sen olabilir (eğer gerekiyorsa) sitelerinin bir kümesinden bir Voronoi harita hesaplamak için yerleşik veya üçüncü taraf işlevlerini kullanın.
Bu bir popülerlik yarışmasıdır, bu nedenle en net oyları içeren cevap kazanır. Seçmenlerin cevaplarını yargılamaya teşvik etmesi
- Orijinal görüntülerin ve renklerinin ne kadar iyi yaklaştığı.
- Algoritmanın farklı görüntü türleri üzerinde ne kadar iyi çalıştığı.
- algoritma küçük N için ne kadar iyi çalışıyor ?
- algoritmanın uyarlamalı olarak kümelemesi olup olmadığı, görüntünün daha fazla ayrıntı gerektiren bölgelerine işaret eder.
Test görüntüleri
Algoritmanızı test etmek için birkaç görüntü (bazı olağan şüphelilerimizden bazıları yeni bazıları). Büyük versiyonlar için resimlere tıklayınız.
İlk sıradaki plaj Olivia Bell tarafından çizildi ve iznine dahil edildi.
Ekstra bir meydan okuma istiyorsanız, Yoshi'yi beyaz bir arka planla deneyin ve karnı doğru olsun.
Tüm bu test resimlerini , hepsini zip dosyası olarak indirebileceğiniz bu imgur galerisinde bulabilirsiniz. Albüm ayrıca başka bir test olarak rastgele bir Voronoi diyagramı içeriyor. Başvuru için, burada onu üreten veriler .
Lütfen çeşitli farklı görüntüler ve N , örneğin 100, 300, 1000, 3000 (ve bunlara karşılık gelen hücre spesifikasyonlarının bazılarına pastebin) için örnek diyagramlar ekleyin . Uygun gördüğünüz gibi hücreler arasında siyah kenarları kullanabilir veya atlayabilirsiniz (bu, bazı görüntülerde diğerlerinden daha iyi görünebilir). Ancak siteleri eklemeyin (ayrı bir örnek hariç, belki de site yerleşiminizin nasıl çalıştığını açıklamak istiyorsanız).
Çok sayıda sonuç göstermek istiyorsanız , cevapların boyutunu makul tutmak için imgur.com adresinde bir galeri oluşturabilirsiniz . Alternatif olarak, gönderiminize küçük resimler koyun ve referans yanıtımda yaptığım gibi daha büyük resimlere bağlantı vermelerini sağlayın . Küçük resimleri s
imgur.com linkindeki dosya adına ekleyerek alabilirsiniz (örn. I3XrT.png
-> I3XrTs.png
). Ayrıca, hoş bir şey bulursanız diğer test görüntülerini kullanmaktan çekinmeyin.
Oluşturucu
Sonuçlarınızı oluşturmak için çıktınızı aşağıdaki Yığın Parçacığına yapıştırın. Kesin liste formatı, her hücre sırayla 5 kayan nokta sayısıyla belirtildiği sürece , hücrenin sahasının koordinatları x y r g b
olduğu x
ve aralıktaki kırmızı, yeşil ve mavi renk kanalları olduğu sürece önemsizdir .y
r g b
0 ≤ r, g, b ≤ 1
Snippet, hücre kenarlarının çizgi genişliğini ve hücre sitelerinin gösterilip gösterilmeyeceğini belirten seçenekler sunar (ikincisi çoğunlukla hata ayıklama amaçları için). Ancak çıktının yalnızca hücre özellikleri değiştiğinde yeniden oluşturulduğunu unutmayın; bu nedenle diğer seçeneklerden bazılarını değiştirirseniz, hücrelere veya başka şeylere bir boşluk ekleyin.
Bu gerçekten güzel JS Voronoi kütüphanesini yazdığı için Raymond Hill'e büyük krediler .