2012-04-12 13 views
5

enter image description here में ओवरलैप्ड पथों का पता लगाना मैं जानना चाहता हूं कि वर्तमान में खींचा गया पथ मौजूदा पथ को छूता/पार करता है या नहीं। मौजूदा पथ या तो पृष्ठभूमि छवि का खींचा या हिस्सा है। यह उपयोगी भी होगा, अगर मैं के बाद यह पाउडर पूरी तरह तैयार हो गया हूं तो यह उपयोगी होगा। सबसे खराब परिदृश्य में, क्या मैं कुछ पिक्सेल-बाय-पिक्सेल जांच कर सकता हूं यह देखने के लिए कि क्या दो पथ छू रहे हैं?एंड्रॉइड

+0

द्वारा नहीं कि यह कैसा दिखता का एक स्क्रीनशॉट लिए एक लिंक जोड़ना और क्या देखा करने के लिए कुछ संदर्भों चीज़ें थोड़ी स्पष्ट मदद कर सकता है। – erbsman

+0

स्क्रीनशॉट जोड़ा गया। – deeJ

उत्तर

0

लाइन को परिभाषित करने के लिए पथ का उपयोग करें, फिर एक एंड्रॉइड.graphics सेट करें। उस पथ पर क्षेत्र। बाद में एक दूसरे के खिलाफ सभी क्षेत्रों जाँच मौसम वे एक दूसरे को काटना या

region1.op(region2, Op.INTERSECT); 
+0

यह निश्चित रूप से काम नहीं करेगा क्योंकि एक क्षेत्र एक बंद पथ है, और वह हर समय बंद पथ नहीं खींच रहा है? या मुझसे यहां कुछ छूट रहा है ? – erbsman

+0

यदि वह कुछ खींचता है, तो यह x और y आयाम दोनों में चौड़ाई होगी। वह इसके चारों ओर एक बंद पथ बना सकता है, कम से कम एक चौड़ाई में चिपकाया जा रहा है। – Bondax

+0

कोई विचार मैं पॉइंटएफ [] सरणी से पथ कैसे बना सकता हूं? मुझे इस सरणी में सभी बिंदुओं के निर्देशांक मिल गए हैं। – deeJ

0

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

ArrayList<Pair<Pair<Integer,Integer>,Pair<Integer,Integer>>> lineList = new ArrayList<Pair<Pair<Integer, Integer>, Pair<Integer, Integer>>>(); 

    // add all your lines to the list 
    // lineList.add(line); 

    // handle the last line 
    int startX = 10; 
    int startY = 20; 
    int endX = 40; 
    int endY = 50; 

    Pair<Integer,Integer> lineStart = new Pair<Integer, Integer>(startX, startY); 
    Pair<Integer,Integer> lineEnd = new Pair<Integer, Integer>(startX, startY); 
    Pair<Pair<Integer,Integer>,Pair<Integer,Integer>> lastLine = new Pair<Pair<Integer, Integer>, Pair<Integer, Integer>>(lineStart, lineEnd); 

    for(Pair<Pair<Integer,Integer>,Pair<Integer,Integer>> l: lineList){ 
     // if "lastLine" intersects "l" do you stuff 
    } 
+0

मुझे आश्चर्य है कि कोई सूची में एक पंक्ति कैसे सहेजता है। मैं लाइन के सभी पिक्सेल के निर्देशांक को बचाता हूं? – deeJ

+0

बस जोड़े की एक जोड़ी बचाओ। int startX = 10; int startY = 20; int endX = 40; int endY = 50; जोड़ी <पूर्णांक, पूर्णांक> lineStart = नई जोड़ी <पूर्णांक, पूर्णांक> (startX, startY); जोड़ी <पूर्णांक, पूर्णांक> lineEnd = नई जोड़ी <पूर्णांक, पूर्णांक> (startX, startY); जोड़ी <जोड़ी <पूर्णांक, पूर्णांक>, जोड़ी <पूर्णांक, पूर्णांक >> रेखा = नई जोड़ी (लाइन स्टार्ट, लाइनएंड); – erbsman

+0

यह एक घुमावदार रेखा के लिए काम नहीं करेगा, है ना? मुझे खेद है अगर यह सवाल से निहित नहीं था। – deeJ