Büyük bir çokgenim var (Pa
). görüldüğü gibi çokgen içinde küçük "delik" bir yeri vardır:Çıkarmadan Sonra Kalan Polonu Hesaplamak için Algoritma
- delik birbirlerine
- çakışamaz: Burada
delikleri için bir kaç şartı vardır delikler, numaralı dış poligonun dış poligonun dışına çıkamaz. Ancak, delikleri dış poligon kenarına
Kalan çokgen (veya çokgen listesi) verimli bir şekilde nasıl elde edilir? En kolay yol (kaba kuvvet yolu) Pa
'u almak ve delikleri çıkararak aşamalı olarak kalan çokgeni hesaplamaktır. Bu fikir mümkün olsa da, daha verimli bir algoritma olduğundan şüpheleniyorum.
Düzenleme: Çokgen kırpma (veya çıkarma) algoritmasının nasıl gerçekleştirileceğini sormuyorum! Aslında bu kaba kuvvetle yapacağım bir şey. Ben poligon kırpma yöntemine ek olarak (ana çokgen al ve sonra yavaş yavaş delikler dışarı klip) soruyorum, başka daha verimli yolu var mı?
"System.Drawing" deki eski "Region" sınıfına baktınız mı?Belki de GraphicsPath'ın yardımı olabilir. – leppie
@leppie, problem çokgenimi 'System.Drawing' içindeki sınıfı kullanarak çizmemek. Başka bir yere çiziyorum. – Graviton
Yakında Hui: Bunun biraz GDI'ya özgü olduğunu fark ettim, ancak bu beni bir web uygulamasında kullanmamı engelledi. – leppie