मैं कोड का एक टुकड़ा लिखने की कोशिश कर रहा हूं जिसमें बहुभुज की सूची दी गई है (IntPoints की सूचियों की सूची के रूप में परिभाषित) चेक अगर उनमें से कोई भी स्पर्श करता है और यदि उन्हें एक बहुभुज में विलय करता है । ऐसा करने के लिए मैं पहले से ही निम्नलिखित दो तरीकों की कोशिश की है:गलत परिणाम देने वाले बहुभुज बहुभुज
List<List<IntPoint>> output=new List<List<IntPoint>>();
output = Clipper.SimplifyPolygons(input,PolyFillType.pftPositive);
और
Clipper c = new Clipper();
c.AddPaths(input, PolyType.ptClip, true);
c.Execute(ClipType.ctUnion, output);
अब इन दोनों को एक साथ काफी आसानी से बहुभुज विलय लेकिन वे किसी भी बहुभुज खुली जगह के रूप में एक सा overzelous हैं अनदेखा कर रहे हैं और खुले क्षेत्रों को केवल एक बहुभुज में जोड़ा जाता है, जिसका अर्थ है कि इस तरह कुछ:
होता है। अब यह स्पष्ट रूप से गलत है क्योंकि ये दो बहुभुज एक-दूसरे को छूते नहीं हैं। एक ही परिणाम दोनों विधियों के साथ होता है। नतीजा इनपुट के समान होगा। इसे ठीक करने के लिए कोई भी विचार? सोल्शन को क्लिपर लाइब्रेरी का उपयोग नहीं करना पड़ता है (मैं इससे विवाहित नहीं हूं) लेकिन मुझे कुछ ऐसा करने की ज़रूरत है जो पॉलीगोन का उपयोग करता है जो पॉइंट इनपुट की सूची द्वारा परिभाषित किया गया है एक सूची है> जहां एक इंटॉइंट सिर्फ एक स्ट्रक्चर होता है जिसमें एक्स होता है और एक वाई।
संपादित मुझे लगता है कि इस समस्या को भी जब वहाँ अन्य बहुभुज के अंदर कोई बहुभुज है तब होता है नोटिस, तो समाधान हमेशा होता है "भरा" संपादित करें संपादित करें: यहाँ भी क्या इनपुट
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
की तरह हो सकता है का एक उदाहरण है
इस descripes इनपुट एक छेद के साथ एक वर्ग है।
कोई भी यह भी जानता है कि इस समस्या का वर्णन कैसे किया जाए? बहुभुज में बहुभुज विलय किया जा रहा है? Enclaves के लिए अनुमति नहीं है? – Thijser
मुझे लगता है कि मुझे सोल्शन मिल सकता है लेकिन यह https://stackoverflow.com/questions/34263601/algoritm-for-translating-list-of-wallsections-into-coherent-polygon – Thijser