संपादित जैसी चीजों के लिए गूगल: ओह देखो, Simplifying Polygons
आप टक्कर पता लगाने का उल्लेख किया। आप वास्तव में सरल हो सकते हैं और इसके चारों ओर एक बाध्यकारी उत्तल झुकाव की गणना कर सकते हैं।
यदि आप अवतल क्षेत्रों की परवाह करते हैं, तो आप अपने बहुभुज के केंद्र को ले कर एक अवतल हल की गणना कर सकते हैं और शुरू करने के लिए एक बिंदु चुन सकते हैं। शुरुआती बिंदु से सेंट्रॉइड के चारों ओर घुमाएं, प्रत्येक वर्टेक्स को आप ढूंढना चाहते हैं, और इसे बाउंडिंग हॉल में अगले चरम के रूप में असाइन करना। एल्गोरिदम की जटिलता इस बात पर आती है कि आपने निर्धारित करने के लिए कौन से शिखर बनाए रखा है, लेकिन मुझे यकीन है कि आपने पहले ही इसके बारे में सोचा था। आप अपने सभी शिखर को केंद्र के सापेक्ष अपने स्थान के आधार पर बाल्टी में फेंक सकते हैं। जब एक बाल्टी पूरी तरह से लंबवत अक्षरों की संख्या से अधिक हो जाती है, तो आप इसे विभाजित कर सकते हैं। फिर उस बाल्टी में ऊर्ध्वाधर का मतलब लें क्योंकि कशेरुक आपके बाध्यकारी हल में उपयोग करें। या, बाल्टी भूल जाओ, और जब आप सेंट्रॉइड के चारों ओर घूम रहे हों, तो केवल एक बिंदु चुनें यदि यह अंतिम बिंदु से दी गई दूरी से अधिक है।
दरअसल, आप शायद अपने बहुभुज में सभी बिंदुओं का उपयोग "बिंदुओं के बादल" के रूप में कर सकते हैं और इसके आसपास अवतल हल की गणना कर सकते हैं। मैं एक एल्गोरिदम लिंक की तलाश करूंगा। इस पर सबसे बुरा मामला पूरी तरह से उत्तल बहुभुज होगा।
एक और विकल्प एक बाध्य आयताकार से शुरू करना है। आयताकार पर प्रत्येक चरम के लिए, बिंदु से बहुभुज तक दूरी खोजें। सबसे दूर के कशेरुक के लिए, इसे दो और शिखर में विभाजित करें और उन्हें कुछ में ले जाएं। दोहराना या क्षेत्र के कुछ अनुपात तक पूरा होने तक दोहराएं। मुझे इसके बारे में कुछ और जानकारी के बारे में सोचना होगा।
यदि आप वास्तव में समान दिख रहे बहुभुज की देखभाल करते हैं, तो एक आत्म-अंतरंग बहुभुज के मामले में भी, एक और दृष्टिकोण की आवश्यकता होगी, लेकिन जब आप टकराव का पता लगाने के बारे में पूछते हैं तो यह आवश्यक नहीं लगता है।
यह post में उत्तल भाग के बारे में कुछ विवरण हैं।
स्रोत
2009-03-04 23:37:47
वाह! यह एल्गोरिदम बस रॉक! : डी –