त्रिभुज आसन्न डेटा का निर्माण


9

त्रिकोण सूचकांकों की सूची को देखते हुए, एक ज्यामिति धारक के लिए आसन्न के साथ सूचकांक की सूची में परिवर्तित करने के बारे में वास्तव में कैसे जाता है?

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

मुझे पता है कि सूची में दिए गए किसी भी त्रिकोण के लिए, {0, 1}, {1, 2} और {2, 0} (या {n, n + 1}, {n + 1, n + 2}, { n + 2, n} यदि आप इसे पसंद करते हैं) तो यह किनारों का है; सूचकांक सूची अच्छी तरह से बनाई गई है और घुमावदार क्रम का सही ढंग से सम्मान करती है।

मुझे पता है कि किसी भी ऐसे बढ़त के लिए, हम पूरी सूची को एक अन्य त्रिकोण के लिए खोज सकते हैं जो उन सूचकांकों में से दो का उपयोग करता है, और उस त्रिकोण का तीसरा सूचकांक उस किनारे के लिए आसन्न त्रिकोण को पूरा करने के लिए उपयोग करने वाला है।

मुझे पता है कि आसन्न सूची में प्रत्येक मूल त्रिकोण को 6 सूचकांकों द्वारा दर्शाया गया है, मूल सूचकांक स्लॉट 0, 2, 4 में जाते हैं; आसन्नता को पूरा करने के नए सूचकांक 1, 3, 5 में जाते हैं। बढ़त के लिए पूरा करने के लिए सूचकांक {0, 1} स्लॉट 1 में जाता है, बढ़त के लिए पूरा करने के लिए सूचकांक {1, 2} स्लॉट 3 में जाता है, सूचकांक किनारे के लिए पूरा करने के लिए {2, 1} स्लॉट 5 में जाता है।

मैंने क्या कोशिश की है?

मैंने इसे मजबूर करने की कोशिश की है, और हाँ, यह काम करेगा, लेकिन मैं एक अधिक सुरुचिपूर्ण दृष्टिकोण के बाद हूं।

मैंने एरिक लेंग्येल की बढ़त सूची बनाने वाले की कोशिश की है, लेकिन (1) यह मूल त्रिकोण आदेश का सम्मान नहीं करता है, (2) यह घुमावदार आदेश का सम्मान नहीं करता है, (3) यह उतना ही स्पष्ट है जितना कीचड़ जहां जाना है अगली बार जब आपने एज लिस्ट बनाई है, और (4) मुझे सैंपल कोड का संदेह है, जिसमें "ट्रायंगलइंडेक्स" बनाम "फेसइंडेक्स" जैसी स्पष्ट झलकियाँ हैं - तो क्या लेखक ने भी कोड संकलित किया था, कभी भी इसे चलाने का मन नहीं करता इसे सत्यापित करें?

तो - यहाँ से कोई सुझाव या संकेत?


जिमी, मैंने छाया संस्करणों के बारे में सामान को संपादित किया और शीर्षक बदल दिया, क्योंकि यह प्रासंगिक नहीं लगता था और संभावित रूप से भ्रमित था - सवाल वास्तव में आसन्न डेटा के निर्माण के बारे में है, भले ही आपका अंतिम उद्देश्य छाया संस्करणों के लिए इसका उपयोग करना है।
नाथन रीड

जवाबों:


11

मैं इसके लिए हैश टेबल का उपयोग करने की कोशिश करूंगा (उदाहरण के लिए, std::unordered_mapयदि आप C ++ में हैं)। एक हैश तालिका का निर्माण करें जो आधे किनारे से (इंडेक्स की एक जोड़ी के रूप में व्यक्त की जाती है), त्रिकोण के तीसरे सूचकांक के आधे किनारे से संबंधित है।

यह केवल त्रिकोण सूची पर पुनरावृत्ति करके और प्रत्येक त्रिकोण के तीन आधे किनारों को हैश तालिका में जोड़कर बनाया जा सकता है। यदि आपकी प्रारंभिक अनुक्रमणिका सूची में आसन्न त्रिकोणों की एक जोड़ी थी, (0, 1, 2, 2, 1, 3), तो आप एक हैश तालिका के साथ समाप्त करेंगे:

(0, 1) -> 2
(1, 2) -> 0
(2, 0) -> 1
(2, 1) -> 3
(1, 3) -> 2
(3, 2) -> 1

ध्यान दें कि किनारों (1, 2) और (2, 1) दोनों तालिका में दिखाई देते हैं, किनारे के दोनों किनारों का प्रतिनिधित्व करते हैं, और प्रत्येक दो त्रिकोणों में से प्रत्येक के तीसरे शीर्ष की ओर इशारा करते हैं।

फिर, आसन्न डेटा बनाने के लिए आपको केवल त्रिकोण सूची पर पुन: चलना होगा, और प्रत्येक त्रिकोण के किनारों को विपरीत घुमावदार के साथ क्वेरी करना होगा। तो जब त्रिकोण (0, 1, 2) प्रसंस्करण आप किनारों (1, 0), (2, 1), और (0, 2) क्वेरी करेंगे। यह प्रत्येक किनारे के विपरीत शीर्ष को पाएगा, अगर यह मौजूद है।


1
कूल, विपरीत क्रम के साथ किनारों की खोज करना लापता जानकारी का एक महत्वपूर्ण टुकड़ा था; एक चैंपियन काम करता है; +1 और स्वीकार किया गया।
मैक्सिमस मिनिमस

2

को देखो आधा बढ़त डेटा संरचना

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

डेटा संरचना कनेक्टिविटी, आसन्न, और बहुत कुशल पर प्रश्न बनाती है। डेटा को कुशलता से उत्पन्न करने के लिए एल्गोरिदम हैं, हालांकि जरूरी नहीं कि "गेम रन-टाइम" कुशलता से (आप शायद अपनी संपत्ति में इस ऑफ़लाइन करना चाहते हैं)।

इन ब्लॉग पोस्ट को भी देखें । मेरा मानना ​​है कि संरचना और एल्गोरिदम भी रियल-टाइम कोलिजन डिटेक्शन में हैं, लेकिन मुझे यकीन नहीं है और न ही 'कार्यालय में एक प्रति है।


-1, क्षमा करें, लेकिन यह मेरे पास पहले से ही कोई जानकारी नहीं थी, और जीएस में उपयोग के लिए आसन्न के साथ एक सूची बनाने के बजाय सीपीयू पर उपयोग के आसपास उन्मुख था।
मैक्सिमस मिनिमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.