Çok sayıda tekboynuzun bir listesini (IntPoints listelerinin listesi olarak tanımlanmış) kontrol eden bir parça kod yazmayı deniyorum. . ŞimdiYanlış sonucu veren çokgenlere dokunma
List<List<IntPoint>> output=new List<List<IntPoint>>();
output = Clipper.SimplifyPolygons(input,PolyFillType.pftPositive);
ve
Clipper c = new Clipper();
c.AddPaths(input, PolyType.ptClip, true);
c.Execute(ClipType.ctUnion, output);
herhangi poligon açık alanlar olarak biraz overzelous olan ancak bunlardan ikisi birlikte oldukça kolay çokgenler birleştirmek: Bunu yapmak için zaten şu iki yöntem denedi dikkate alınmaz ve açık alanlar sadece böyle bir şey, yani tek bir çokgene birleştirilir:
olur. Şimdi bu iki poligonun birbirine değmediği açıktır. Aynı sonuç her iki yöntemde de ortaya çıkar. Sonuç, girişle aynı olacaktır. Bunu düzeltmek için bir fikrin var mı? Sollution, clipper kütüphanesini kullanmak zorunda değil (ben onunla evlenmedim) ama bir nokta girişi listesi tarafından tanımlanan poligonları kullanan bir şeye ihtiyacım var. ve bir y.
Düzenleme diğer poligonun içinde hiçbir poligon olduğunda bu sorun oluşur fark, bu nedenle çözüm düzenleme düzenleme "dolu" her zaman geçerli: Burada da giriş
input[0][0]
{ClipperLib.IntPoint}
X: -724
Y: -472
input[0][1]
{ClipperLib.IntPoint}
X: 428
Y: -472
input[0][2]
{ClipperLib.IntPoint}
X: 428
Y: -472
input[0][3]
{ClipperLib.IntPoint}
X: 428
Y: 632
input[0][4]
{ClipperLib.IntPoint}
X: 428
Y: 632
input[0][5]
{ClipperLib.IntPoint}
X: -724
Y: 632
input[0][6]
{ClipperLib.IntPoint}
X: -724
Y: 632
input[0][7]
{ClipperLib.IntPoint}
X: -724
Y: -472
input[0][8]
{ClipperLib.IntPoint}
X: -88
Y: -218
input[0][9]
{ClipperLib.IntPoint}
X: -107
Y: -218
input[0][10]
{ClipperLib.IntPoint}
X: -107
Y: -218
input[0][11]
{ClipperLib.IntPoint}
X: -107
Y: -209
input[0][12]
{ClipperLib.IntPoint}
X: -107
Y: -209
input[0][13]
{ClipperLib.IntPoint}
X: -320
Y: -172
input[0][14]
{ClipperLib.IntPoint}
X: -320
Y: -172
input[0][15]
{ClipperLib.IntPoint}
X: -320
Y: 132
input[0][16]
{ClipperLib.IntPoint}
X: -320
Y: 132
input[0][17]
{ClipperLib.IntPoint}
X: -88
Y: 173
input[0][18]
{ClipperLib.IntPoint}
X: -88
Y: 173
input[0][19]
{ClipperLib.IntPoint}
X: -88
Y: -201
input[0][20]
{ClipperLib.IntPoint}
X: -88
Y: -201
input[0][21]
{ClipperLib.IntPoint}
X: -88
Y: -218
gibi ne olabileceğini bir örneğidir
Bu açıklamanın girdisi, içine kesilmiş bir delik içeren bir karedir.
Bu sorunu en iyi nasıl tanımlayacağını bilen var mı? Çokgenlerde poligonlar birleştiriliyor mu? Enklavlara izin verilmiyor mu? – Thijser
Bence bu işe yaramamış olabilir ama bu https://stackoverflow.com/questions/34263601/algoritm-for-translating-list-of-wallsections-into-coherent-polygon – Thijser