[अस्वीकरण: मुझे लगता है कि निम्नलिखित को काम करना चाहिए लेकिन वास्तव में इसे खुद कोड नहीं किया है]
मैं हां / ना में जवाब देने के "तुच्छ" तरीके के बारे में नहीं सोच सकता था, लेकिन निम्नलिखित प्रश्न के व्यावहारिक समाधान के लिए एक उचित दृष्टिकोण होगा।
मान लेते हैं कि हमारे घटता क्रमशः नियंत्रण बिंदु { A0, A1..An } और { B0, .. Bm } के साथ A (s) और B (t) हैं।
यह मुझे लगता है कि, 2 डी बेज़ियर की एक जोड़ी दी गई है जिसके लिए हम यह निर्धारित करना चाहते हैं कि क्या करना है या नहीं करना है, इस पर विचार करने के लिए छह मामले हैं:
मामला जहां हम "तुच्छ" कर सकते हैं निर्धारित करते हैं कि वे अंतर नहीं करते हैं ।
मामला जहां वे कई बार परिमित संख्या में अंतर करते हैं और हम "आसानी से" यह निर्धारित कर सकते हैं कि वे निश्चित रूप से कम से कम एक बार प्रतिच्छेद करते हैं (लेकिन हम वास्तव में उन चौराहों की परवाह नहीं करते हैं)
बेज़ियर में से एक पतित है, अर्थात एक बिंदु (जो तब होगा जब सभी नियंत्रण बिंदु समान हों)। हम मान सकते हैं कि हम पहले ही उस मामले को संभाल चुके हैं जहां दोनों बिंदु हैं।
एक या एक से अधिक कर्व्स बंद हैं, जैसे। A0 == एक। जीवन को सरल बनाने के लिए, हम ऐसे वक्रों को तोड़ेंगे और फिर से शुरू करेंगे।
चौराहे के अनंत अंक हैं क्योंकि प्रत्येक "पैरेंट" बेज़ियर का सबसेट है और वे ओवरलैप करते हैं।
हम उपरोक्त मामलों के बारे में निश्चित नहीं हैं और आगे की जांच की आवश्यकता है
फिलहाल हम 3 और 4 को अनदेखा करेंगे, लेकिन बाद में उनके पास वापस आएँगे।
मामला एक
जैसा कि आप अपने प्रश्न में संकेत देते हैं, यदि ए और बी के नियंत्रण बिंदुओं के संबंधित बाउंडिंग बॉक्स , प्रतिच्छेद नहीं करते हैं, तो वक्र प्रतिच्छेद नहीं कर सकते हैं। जाहिर है यह एक त्वरित अस्वीकार परीक्षण है लेकिन यह अत्यधिक रूढ़िवादी है। जैसा कि आप शायद जानते हैं, एक बेजियर वक्र के साथ, इसके नियंत्रण बिंदुओं का उत्तल पतरा वक्र पर बंधा हुआ (सख्त) होता है। इस प्रकार हम यह तय करने के लिए अलग अक्ष तकनीक का उपयोग कर सकते हैं कि A और B के पतवार एक दूसरे को नहीं काटते हैं। (जैसे कि विकिपीडिया में दिखाया गया है :)
केस 2
यदि मामला 1 परीक्षण विफल हो जाता है, तो आप एक चौराहे के "तुच्छ" अस्तित्व की जांच कर सकते हैं। अब शायद ऐसा करने के बेहतर तरीके हैं, लेकिन निम्नलिखित, अपेक्षाकृत सस्ते, दृष्टिकोण मेरे लिए हुए:
सिर्फ वक्र A पर विचार करें:
हम पर वक्र शुरू होता है पता , पर समाप्त , और उत्तल पतवार के अंदर झूठ होगा। सादगी के लिए, हम लाइन सेगमेंट की दिशा की गणना करें और दोनों तरफ की सीमा की गणना करें (यानी सीधा नियंत्रण बिंदु के शेष बिंदुओं के डॉट उत्पादों को )।A0AnA0An¯¯¯¯¯¯¯¯¯¯¯¯A0An¯¯¯¯¯¯¯¯¯¯¯¯
यदि हम वक्र B के साथ भी ऐसा करते हैं तो हमें निम्नलिखित (संभव) मामले मिलते हैं:
यदि हमें पता चलता और बी के बाहर विपरीत सीमा रहे हैं और कि और एक की सीमा से आउटसाइड पर हैं, तो, Beziers की निरंतरता से, वहाँ कम से कम एक चौराहे होना चाहिए।A0AnB0Bm
केस 6
यदि हम उपरोक्त मामलों में से किसी को भी तुरंत नहीं दिखा सकते हैं, तो प्रत्येक बेज़ियर को दो "हिस्सों" में विभाजित करें, जैसे कि । यह अपेक्षाकृत सीधा है (पाठक के लिए एक अभ्यास के रूप में छोड़ दिया गया है) लेकिन द्विघात बेज़ियर के लिए विशेष रूप से तुच्छ है :A1,A2,B1,B2
पुनरावर्ती 4 संयोजनों की तुलना करें: । स्पष्ट रूप से यदि सभी पास केस 1, कोई चौराहा नहीं है। यदि कोई भी 1 विफल हो जाता है, तो उस कम हो चुके सबसेट के साथ बाकी परीक्षणों को जारी रखें।(A1,B1),(A2,B1)...(A2,B2)
केस 3 और 5
यह वह जगह है जहाँ यह थोड़ा अधिक थकाऊ हो जाता है।
यदि "केस 3" "केस 1" परीक्षण से पहले हो जाता है, तो मुझे लगता है कि आपको वास्तविक चौराहे के लिए हल करने की आवश्यकता है। यह देखते हुए कि बेजियर, ए (एस) के एन नियंत्रण बिंदुओं को मैप करने के लिए एक सरल प्रक्रिया है, जो बेजियर, ए '(ओं) के एन -1 बिंदुओं के लिए है, इसके 1 व्युत्पत्ति का प्रतिनिधित्व करता है (फिर ध्यान रखा जाता है) अपेक्षाकृत दुर्लभ, तथाकथित "पतित" स्थितियों में जहां 1 व्युत्पन्न शून्य पर होता है), फिर न्यूटन पुनरावृत्ति (एक आयाम पर) का उपयोग संभावित समाधान खोजने के लिए किया जा सकता है।
यह भी ध्यान दें कि, ए 'के नियंत्रण अंक व्युत्पन्न मूल्यों पर एक बाध्य हैं, कुछ मामलों के जल्दी उन्मूलन करने की क्षमता है।
केस 5 अपेक्षाकृत असंभव लगता है, इसलिए शायद तभी जब कुछ पुनरावृत्तियों के बाद कोई निर्णायक सबूत नहीं होता है, कोई भी क और ख के विपरीत ए के प्रत्येक अंतिम बिंदु की कोशिश कर सकता है। यह केवल चौराहे का प्रमाण देगा - गैर-चौराहे का प्रमाण नहीं।