वोरोनो डायग्राम से त्रिकोणासन कैसे करें?


13

मैंने अंकों के एक सेट ( Boost.polygon के साथ ) से एक वोरोनो आरेख की गणना की ।

मैं एक Delaunay त्रिकोण खोजने की कोशिश करता हूं, जो प्रत्येक वोरोनो एज के लिए प्रत्येक सेल केंद्र को जोड़ता है, लेकिन मुझे कुछ किनारों की याद आती है।

निम्नलिखित छवि में, लाल बिंदु मेरे प्रारंभिक बिंदु हैं, नीली रेखाएं वोरोनो किनारों (मैंने अनंत किनारों को नजरअंदाज कर दिया) हैं, और हरे रंग की रेखाएं त्रिकोणीय किनारों (प्रत्येक नीले किनारे के लिए एक हरे रंग की धार, दो सेल पिंस को जोड़ती हैं) हैं।

हम देख सकते हैं कि विकर्ण किनारे गायब हैं। मुझे किसकी याद आ रही है?

वोरोनोई आरेख

जवाबों:


19

आपके आरेख में केंद्र बिंदु वोरोनोई आरेख का एक पतित किनारा है। यदि आप अनियमित बिंदु क्लाउड के लिए वोरोनोई आरेख उत्पन्न करते हैं, तो प्रत्येक शीर्ष पर डिग्री 3 होगी। डिग्री 4 (या अधिक) के साथ एक शीर्ष केवल तब हो सकता है जब दो (या अधिक) कोने मेल खाते हैं। इसका मतलब है कि उनके बीच एक शून्य-लंबाई का किनारा है। लेकिन उस बढ़त को डेलौनाय ट्राइंगुलेशन में अभी भी एक किनारे होना चाहिए। मुद्दा यह है कि यह मनमाना है कि आप किन दो संभावित किनारों को चुनते हैं, क्योंकि शून्य-लंबाई वाले किनारे की कोई संबद्ध दिशा नहीं है।

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

हम इसे दो अलग-अलग तरीकों से कर सकते हैं, जो दोनों आपके आरेख में पतित मामले को जन्म देते हैं। आप देखेंगे कि आप दो अलग-अलग Delaunay त्रिकोणों के साथ समाप्त होते हैं, जो पतित मामले के लिए दोनों मान्य सीमाएँ हैं:

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

मुझे लगता है कि आपका कोड इस पतित मामले को एक कारण या किसी अन्य के लिए याद कर रहा है, लेकिन वास्तव में यह देखने के बिना कि आप वोरोनोई आरेख से डेलॉनाय त्रिभुज की गणना कैसे करते हैं, यह आपको इससे आगे इंगित करना असंभव है।

यह भी ध्यान दें कि उच्चतर विकृति होने पर (एक वृत्त के चारों ओर समान कोणों पर वितरित चार से अधिक बिंदुओं पर) शायद अतिरिक्त ध्यान देने की आवश्यकता होगी:

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

इन एनिमेशनों से यह भी पता चलता है कि (एक गैर-पतित मामले में भी), इसी वोरोनोई और डेलॉनाय किनारों को वास्तव में अपने परिमित सीमा के भीतर पार नहीं करते हैं। यह देखने के लिए यह कठिन हो सकता है कि 2 (या 3) किनारों जो अंत में नियमित बहुभुज को त्रिकोणित करते हैं, वास्तव में कई पतित किनारों के अनुरूप होते हैं जो सभी केंद्र में होते हैं। यह भी ध्यान दें कि कुल मिलाकर पेंटागन के 5 अलग-अलग त्रिकोण और षट्भुज के 14 त्रिकोण हैं (हालांकि मुझे नहीं पता कि सभी 14 एक गैर-पतित त्रिकोण को विकृत करके प्राप्त किए जा सकते हैं)।

संपादित करें (ओपी द्वारा)

Boost.polygon के साथ गणना की गई वोरोनोई आरेख प्रत्येक वोरोनोई वर्टेक्स के माध्यम से चलने में सक्षम होते हैं, और प्रत्येक किनारे उन कोने (क्लॉकवाइज या काउंटर-क्लॉकवाइज) से जुड़े होते हैं। इस तरह, प्रत्येक जोड़ी के किनारों के लिए एक त्रिभुज बनाना संभव है (दो जुड़े हुए किनारे 3 कोशिकाओं से जुड़ेंगे)।


आप यहां भी जवाब दे सकते हैं या मैं अपने अन्य प्रश्न को हटा दूंगा।
arthur.sw

3
@ arthur.sw क्रॉस-पोस्टिंग को आम तौर पर एसई पर हतोत्साहित किया जाता है, इसलिए मुझे लगता है कि इसे हटाना बेहतर विकल्प होगा।
मार्टिन एंडर

एक इंटरैक्टिव वोरोनो डायग्राम क्रिएटर: alexbeutel.com/webgl/voronoi.html
arthur.sw

यह भी देखें stackoverflow.com/questions/34342038/… कोड के लिए
Giovanni Funchal
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.