गोलाकार नक्शा प्रतिनिधित्व


19

मेरा नवीनतम खेल एक छोटे ग्रह पर होगा। मैं एक गोले की सतह पर कोशिकाओं का प्रतिनिधित्व करने के लिए अच्छी डेटा संरचना की तलाश कर रहा हूं। त्रिकोण, वर्ग, पेंटागन, हेक्सागोन्स? कौन सा सबसे अधिक खिंचाव को कम करता है और सबसे अच्छा टाइलिंग बनाता है?

गोलाकार मानचित्रण सबसे आसान है लेकिन ध्रुवों पर खिंचाव अस्वीकार्य है। क्यूबमैपिंग भी काफी आसान है लेकिन क्यूब कॉर्नर के पास अभी भी काफी खिंचाव होगा। खिंचाव के संदर्भ में एक आइकोसैहेड्रॉन को उपविभाजित करना सबसे अच्छा लगता है, लेकिन कई त्रिकोणीय सरणियों को अनुक्रमित करने और सीमाओं पर पड़ोसी कोशिकाओं को खोजने में समस्या होगी।

मुझे लगता है कि मैं N-gons का प्रतिनिधित्व करने वाले प्रत्येक बिंदु के एक रैखिक सरणी का उपयोग कर सकता हूं, प्रत्येक N पड़ोसी सूचकांकों की एक सरणी के साथ है, लेकिन ऐसा लगता है कि अंतरिक्ष का एक बड़ा अपशिष्ट है।

खेल में आरटीएस तत्व होते हैं, इसलिए मैं प्रभाव मानचित्रों जैसी चीजों को संग्रहीत कर रहा हूं और ए * पाथफाइंडिंग और दृढ़ संकल्प प्रदर्शन कर रहा हूं, इसलिए प्रतिनिधित्व कुशल होना चाहिए।


मानचित्र की सटीक टोपोलॉजी कितनी महत्वपूर्ण है, क्योंकि सिर्फ एक ही दिशा में अभिनेताओं को जाने देने का विरोध किया जाता है और अंत में वे कहां से शुरू करते हैं? सबसे सरल और सबसे कुशल प्रतिनिधित्व एक टोरस / डोनट होगा।
कॉंगसबोंगस

1
हां, मैंने गोलाकार मानचित्रण और ध्रुवों के साथ होने वाली समस्याओं का उल्लेख किया है। मैं सतह के चारों ओर मूल्यों को संग्रहीत करना चाहता हूं, इसलिए मुझे 3 डी सतह बिंदु से सरणी इंडेक्स तक मैपिंग की आवश्यकता होती है, जहां तक ​​संभव हो उतना कम खिंचाव।
DaleyPaley

आप एक क्षेत्र बनाने के लिए एक टेट्राहेडॉन को वश में करने की कोशिश कर सकते हैं। इसमें समान आकार और वितरित त्रिकोण होते हैं।
थलडोर

1
@ थलडोर सुझाव के लिए धन्यवाद। यकीन नहीं है, लेकिन मुझे लगता है कि अगर मैं त्रिकोणीय मार्ग पर जाता हूं, तो आईसीओएहेड्रॉन टेट्राहेड्रोन से बेहतर हैं। लेकिन वैसे भी, टेसूलेशन समस्या नहीं है। यह कुशल सरणी अनुक्रमण है जो मुझे परेशान कर रहा है।
DaleyPaley

जवाबों:


12

ठीक है, इस विषय में रुचि रखने वाले किसी भी व्यक्ति के लिए अब मैं अपने द्वारा चुने गए समाधान का विस्तार करूंगा। हर उस व्यक्ति को धन्यवाद जिसने उत्तर दिया और मुझे विचार दिए।

सबसे पहले, 'बेस्ट' टेसलेशन के लिए, मैं एक प्रारंभिक बिंदु के रूप में काटे गए आइकोसैहेड्रॉन को चुनूंगा । उप- विभाजन करने से 12 पंचकों के साथ वक्रता प्रदान करने वाले हेक्सागोन का बहुत अच्छा प्रकोप होता है। इसके अलावा, इसके दोहरे पर उपखंड जारी रखने से मुझे अच्छे गुणों के साथ प्रतिपादन के लिए एक बहुत अच्छा त्रिकोणीय जाल मिलेगा। 12 पंचकोणीय कोशिकाओं के बारे में: मैं उन्हें अनदेखा कर सकता हूं, उन्हें विशेष बना सकता हूं (जैसे केवल स्थानों का निर्माण किया जा सकता है), या मैं उन्हें दृश्यों के नीचे छिपा सकता हूं।

हेक्सागोनल और पेंटागनियल कोशिकाओं को पड़ोसियों और आसान ट्रैवर्सल तक आसान पहुंच के लिए एक आधे किनारे की डेटा संरचना में संग्रहीत किया जाएगा । एकमात्र मुश्किल हिस्सा यह है कि कौन सा सेल एक विश्व बिंदु है, लेकिन यह एक यादृच्छिक सेल पर शुरू करके और पड़ोसियों के माध्यम से बिंदु की ओर चलकर किया जा सकता है।

मुझे आशा है कि किसी को यह जानकारी उपयोगी लगेगी। मैंने बहुत कुछ सीखा है और कुछ परिणाम पाने की आशा कर रहा हूं।

संपादित करें:

यहां एक छवि है जो अर्ध-डेटा डेटा संरचना का उपयोग करके मेरे आईसीओसहेड्रॉन उपखंड और दोहरी जाल स्विचिंग का परिणाम दिखाती है।

मैं सेल क्षेत्रों को और अधिक समान प्राप्त करने के लिए छूट के कुछ पुनरावृत्तियों कर सकता हूं।

icosahedron उपखंड


7

जैसा कि आपने अपने प्रश्न में सुझाया है, एक आइकोसैहेड्रॉन को उप-विभाजित करने के आधार पर ऐसा करने का एक तरीका है। एक आइसोसाहेड्रोन 20 समबाहु त्रिभुजों से बना होता है, और इन त्रिभुजों को 5 सेटों में बांटा जा सकता है, जहाँ एक सेट में 4 त्रिकोण समांतर आकृति बनाते हैं:

यहाँ छवि विवरण दर्ज करें

(उनके माध्यम से खींची गई चौकी के साथ चार त्रिकोणों के समूह मैं जिस समांतर चतुर्भुज के बारे में बात कर रहा हूं। तीरों का कहना है कि किन किनारों को एक साथ जोड़कर एक आइकोसैहेड्रॉन में बदल दिया जाएगा।)

यदि इन त्रिभुजों को छोटे त्रिभुजों में विभाजित किया जाता है, तो पूरे समांतर चतुर्भुज को n द्वारा 4n आयताकार सरणी (उदाहरण में n = 4) की तरह अनुक्रमित किया जा सकता है:

यहाँ छवि विवरण दर्ज करें

प्रत्येक सेल में नंबर आयताकार सरणी के कॉलम नंबर हैं। सरणी के भीतर पड़ोसियों को खोजने के लिए नियम काफी सरल हैं: क्षैतिज पड़ोसी सिर्फ प्लस या माइनस 1 कॉलम हैं, जबकि ऊर्ध्वाधर पड़ोसी या तो एक पंक्ति और प्लस एक स्तंभ, या प्लस एक पंक्ति और शून्य से एक कॉलम है, इस पर निर्भर करता है कि क्या स्तंभ कॉलम संख्या क्रमशः या विषम है।

हालाँकि, आपको अभी भी पड़ोसियों को खोजने के लिए कुछ विशेष-केस कोड लिखना होगा जो एक समानांतर चतुर्भुज से अगले तक सीमा पार करते हैं। यह कुछ मुश्किल है, क्योंकि कुछ स्थानों पर, एक समांतर चतुर्भुज का शीर्ष या तल दूसरे के किनारे से जुड़ा होगा, या ऊपर और नीचे दोनों के बीच एक क्षैतिज ऑफसेट के साथ जुड़ा होगा, आदि संभवतः आधा-किनारा संरचना या समान। समांतर चतुर्भुज के लिए यहाँ उपयोगी होगा। हालांकि, कम से कम सभी 5 समानांतर चतुर्भुज के बीच संबंध सममित हैं: वे सभी एक ही पैटर्न का पालन करते हैं जिसमें पक्ष उनके पड़ोसी के दूसरे पक्ष से जुड़ा होता है।


यह वास्तव में एक बहुत अच्छा प्रतिनिधित्व है। त्रिकोणीय तरीकों के साथ मेरी मुख्य चिंता त्रिकोणीय सरणियों और सभी सिलाई को बनाए रखने के साथ थी। अभी भी यहाँ सिलाई का एक छोटा सा हिस्सा है लेकिन सरणियाँ आयताकार हैं। धन्यवाद, यह जानकर बहुत अच्छा लगा
DaleyPaley

3

हम्म - खिंचाव के बारे में टिप्पणी से संकेत मिलता है कि आप गोलाकार और प्लानेर मैपिंग के बीच घूम रहे हैं, यही ध्रुवों में विकृतियों की ओर ले जाता है

यदि आप चाहते हैं कि टाइलें समतल और समान हों, तो आप सही हैं कि एक आइकोसैहेड्रॉन, विशेष रूप से एक टुकड़े-टुकड़े किए हुए इकोसैड्रॉन बहुत आम है

आप विकिपीडिया पर सभी अलग-अलग मैपिंग - गोलाकार पॉलीहेड्रॉन यहां पा सकते हैं

जहाँ तक चेहरों के बीच संबंधों को बनाए रखने की बात है, यह एक टोपोलॉजी की समस्या है - आपको या तो पंखों वाला किनारा या क्वाड एज मददगार लग सकता है (और आपको बीजगणित के पूरे नए रूप को पूरा करने का शानदार अवसर मिलता है) विंग एज


आह, एक टुकड़े टुकड़े में icosahedron। हां, मुझे ठीक यही चाहिए। धन्यवाद। इसके अलावा, जब मैंने कभी भी पंखों वाले किनारे का इस्तेमाल नहीं किया, तो मैंने आधे किनारों का उपयोग जाल हेरफेर के लिए किया है, इसलिए मैं उस क्षेत्र में अच्छी तरह से वाकिफ हूं। चीयर्स, मैं एक समाधान के पास हूं।
DaleyPaley

2

मुझे लगता है कि मैं पार्टी में थोड़ी देर से आ रहा हूं, लेकिन यहां एक संभावित समाधान है जिसका उपयोग मनमाने आकार और समान उपस्थिति के गोलाकार दुनिया को बनाए रखने के लिए किया जा सकता है।

यहां समझने वाली महत्वपूर्ण बात यह है कि दुनिया समतल नहीं है, और इसलिए 100% समान टाइलिंग असंभव होगी (यह तथाकथित बालों वाली गेंद प्रमेय से )। कुछ अनियमितताओं की अनुमति दी जानी चाहिए, और सबसे अच्छी उम्मीद हम उन अनियमितताओं को सतह के चारों ओर समान रूप से फैलाने के लिए कर सकते हैं, प्रत्येक को यथासंभव छोटा बना सकते हैं।

यह वास्तव में गैर-नियतात्मक तरीके से करना काफी आसान है। सबसे पहले, सतह के चारों ओर समान रूप से एन यादृच्छिक अंक चुनें। सुनिश्चित करें कि वे बिंदु वास्तव में एक समान हैं ( क्षेत्र बिंदु उठा , सूत्र 9-11 देखें)। दूसरे चरण में हम उन बिंदुओं को कम यादृच्छिक और अधिक समान बनाते हैं: मान लें कि उन सभी बिंदुओं में नकारात्मक विद्युत आवेश होता है ताकि वे एक-दूसरे को पीछे हटा सकें। कई चरणों के लिए बिंदुओं की गति का अनुकरण करें, जब तक कि वे एक संतुलन स्थिति में परिवर्तित नहीं हो जाते। अंकों का यह अंतिम विन्यास आपको एक जाल देगा जो लगभग समान रूप से गोले की सतह के आसपास वितरित किया जाता है।


1
मैंने बालों वाली बॉल थ्योरी के बारे में कभी नहीं सुना था, यह काफी दिलचस्प है। खुद को घटिया चुटकुले बनाने से रोकना होगा। मैंने पहले भी इस तरह से गोले पर अंक वितरित किए हैं, लेकिन समस्या यह है कि बहुभुज यह एक पॉलीटोप को विभाजित करने की तुलना में बहुत धीमा है। इसके अलावा, कोशिकाओं की आकृतियाँ और वैधता मेरी पसंद के लिए बहुत अधिक समान होगी। लेकिन फिर भी धन्यवाद।
DaleyPaley
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.