स्पष्ट रूप से आपको अधिक पॉलीगॉन की बाधाओं के लिए अपना वोरोनोई आरेख उत्पन्न करने की आवश्यकता है। यद्यपि आप इसे बहुभुज के रूप में संदर्भित करते हैं, लेकिन मुझे लगता है कि आपके उदाहरण आरेख में स्पलीन-आधारित किनारों हैं। चलो अब के लिए भूल जाओ।
आप यह सुनिश्चित करना चाहते हैं कि आप युक्त बहुभुज (चाहे आपके द्वारा या किसी अन्य स्रोत से उत्पन्न हो) के साथ शुरू करें, काफी बराबर लंबाई के किनारों के साथ; एक भिन्न कारक यह और अधिक प्राकृतिक बना देगा। मैं शायद 10-20% के अंतर के लिए जाना होगा।
अब आपके पास अपने बराबर लंबाई के रेखा खंडों से घिरा हुआ बहुभुज बहुभुज है, तो आपके पास आधार है जो आपके वोरोनोई आरेख को उत्पन्न करना शुरू कर देता है।आपके कंटेनर पर प्रत्येक किनारे के लिए:
- किनारे सामान्य (उस सेगमेंट के केंद्र से पार्प लाइन जूटिंग) निर्धारित करें।
- किनारे को सामान्य रूप से एक स्लाइडिंग स्केल के रूप में उपयोग करें जिस पर एक नया वोरोनोई नोड केंद्र स्थापित किया जाए। किनारे से दूर की दूरी को आप अपने औसत वोरोनोई सेल "व्यास" के अनुसार निर्धारित करेंगे, यदि वे सभी मंडलियों के रूप में लिया गया था। आपके उदाहरण में ऐसा लगता है कि शायद 30 पिक्सेल (या जो भी आपकी दुनिया इकाइयों में बराबर होगा)। दोबारा, आपको इसके लिए एक भिन्न कारक लागू करना चाहिए ताकि प्रत्येक सेल सेंटर को इसके स्रोत किनारे से समतुल्य न रखा जाए।
- अपने नए केंद्र के लिए वोरोनोई सेल उत्पन्न करें।
- अपनी वोरोनोई सेल स्रोत बिंदु को एक सूची में स्टोर करें।
आप संवर्द्धित प्रत्येक बिंदु उत्पन्न रूप में, आप को देखने के लिए एल्गोरिथ्म एक रेडियल फैशन में अपने अवतल कंटेनर में से प्रत्येक के उत्तल "घटक क्षेत्र" उप विभाजित करते है कि शुरू करना चाहिए।
आप सोच रहे होंगे कि सूची क्या है। खैर, जाहिर है, आप अभी तक नहीं किए गए हैं, आपने केवल कुल वोरोनोई टेस्सेलेशन का एक अंश उत्पन्न किया है जो आप चाहते हैं। एक बार जब आप अपनी अवतल स्थान की इन "सीमा" कोशिकाओं को बना लेते हैं, तो आप नहीं चाहते हैं कि पहले से ही सीमा कक्षों की तुलना में सीमा के करीब नई कोशिकाओं को उत्पन्न किया जाए, आप केवल उन्हें उस क्षेत्र के अंदर चाहते हैं। सीमा सेल स्रोत बिंदुओं की एक सूची बनाए रखने के बाद, आप यह सुनिश्चित कर सकते हैं कि आपके द्वारा बनाए गए किसी और बिंदु क्षेत्र के अंदर हैं। यह सुनिश्चित करने के लिए कि आपके पास बफर जोन है, एक आंतरिक Minkowski योग लेना थोड़ा सा है। अब आप पूरा करने के लिए, इस व्युत्पन्न अवतल स्थान में अपने शेष कोशिकाओं को यादृच्छिक बना सकते हैं।
(चेतावनी emptor: आपको इस पिछले चरण से सावधान रहना होगा। यदि कोई "मार्ग" क्षेत्र बहुत संकीर्ण है, तो इस व्युत्पन्न स्थान की सीमाएं ओवरलैप हो जाएंगी, आपके पास एक गैर-साधारण बहुभुज होगा, और आप अपने प्रयासों के बावजूद गलत जगहों पर अंक डाल सकते हैं। समाधान यह सुनिश्चित करना है कि किनारों से आपकी अधिकतम प्लेसमेंट दूरी आपकी न्यूनतम सीमा चौड़ाई के आधे से अधिक न हो ... या मिंकोवस्की समेत कुछ अन्य ज्यामितीय माध्यमों का उपयोग करें एक संभावना के रूप में संक्षेप में, यह सुनिश्चित करने के लिए कि आप एक अपरिवर्तित व्युत्पन्न बहुभुज के साथ हवा नहीं करते हैं। यह संभव है कि आप एक मल्टीप्लिगॉन, यानी टुकड़ों के साथ समाप्त हो जाएं।)
मैंने अभी तक इस विधि को लागू नहीं किया है, लेकिन हालांकि काम करने के लिए निश्चित रूप से बग होगा, मुझे लगता है टी वह सामान्य विचार आपको सही दिशा में शुरू कर देगा। कहा जाता है एक कागज के लिए
स्रोत
2011-08-29 12:55:44
+1 विज़ुअलाइज़ेशन – Johan