Ne yazık ki kendim başarılı olamadığım bir egzersiz yapıyorum.
Bir dizi dikdörtgen var ve bir dikdörtgen . Düzlem tarama algoritmasını kullanarak tamamen .
Tarama çizgisi algoritmalarının prensibi hakkında daha fazla bilgi için buraya bakın .
Hadi baştan başlayalım. Başlangıçta, tarama çizgisi algoritmasını iki veri yapısı gerektiren çizgi segmenti kavşaklarını bulma algoritması olarak biliyoruz :
- bir set olay noktalarının (segmentlerin ve kesişme noktalarının uç noktalarını depolar)
- bir durum (süpürme çizgisinin kesiştiği segment seti için dinamik yapı)
Genel Fikir: bu süpürme çizgisini varsayalımsoldan dikdörtgen kümesine yaklaşmaya başlayan dikey bir çizgidir. Tümünü sırala dikdörtgenlerin koordinatları ve artan sırada - almalı . İlk olay noktasından başlayın, her nokta için verilen kesişen dikdörtgen setini belirleyin , kesişen dikdörtgenlerin sürekli segmentlerini koordine edin ve kapsamlarını kontrol edin tamamen mevcut koordinat. İle ikili bir ağaç olarak alacak . Herhangi bir parçası varsa açıkta kalır tamamen kapsanmamıştır.
Ayrıntılar: Segment kesişim algoritması fikri, sadece bitişik segmentlerin kesişmesiydi. Bu gerçeğe dayanarak statü inşa ettikve algoritma boyunca korudum. Bu durumda benzer bir fikir bulmaya çalıştım ve şimdiye kadar başarı olmadan, söyleyebileceğim tek şey, karşılık gelen iki dikdörtgen kesişiyor ve koordinatlar çakışıyor.
Sorun nasıl inşa edileceği ve bakım yapılacaktır ve inşa etmenin ve sürdürmenin karmaşıklığı dır-dir. Bu durumda R ağaçlarının çok yararlı olabileceğini varsayıyorum , ancak bulduğum gibi R ağaçları kullanarak minimum sınırlayıcı dikdörtgeni belirlemek çok zor.
Bu sorunun nasıl çözüleceği ve özellikle nasıl oluşturulacağı hakkında herhangi bir fikriniz var mı? ?