2011-09-06 7 views
8

मैं यह जांचना चाहता हूं कि (और यदि हाँ, जहां टक्कर (x, y) है - केवल हाइलाइट करने के लिए) एक पथ स्वयं को छेड़छाड़ करता है। यह भी बहुत दिलचस्प होगा कि मैं कैसे जांच करता हूं कि कोई पथ दूसरे पथ से छेड़छाड़ करता है या नहीं।खुद के साथ android.graphics.path छेड़छाड़ की जांच करें

http://i.stack.imgur.com/JrEmN.png

उत्तर

-1

सबसे आसान तरीका है यदि कोई रेखा खंड किसी अन्य रेखा खंड के साथ काटती है की जाँच करने के लिए है: यहाँ एक स्क्रीनशॉट बेहतर समझाने के लिए मैं क्या मतलब है। एक रेखा खंड पथ में आसन्न बिंदुओं के जोड़े से बना है। 10 अंकों वाले पथ में 9 लाइन सेगमेंट हैं।

यहां एक उदाहरण है कि कोई इसके बारे में कैसे जा सकता है।

import android.graphics.Point; 
import java.util.List; 

static Boolean isPathComplex(List<Point> path) { 

    if (path == null || path.size() <= 2) { 
     return false; 
    } 

    int len = path.size(); 

    for (int i = 1; i < len; i++) { 
     Point lineAStart = path.get(i - 1); 
     Point lineAEnd = path.get(i); 

     for (int j = i + 1; j < len; j++) { 
      Point lineBStart = path.get(j - 1); 
      Point lineBEnd = path.get(j); 
      if (lineSegmentsIntersect(lineAStart, lineAEnd, lineBStart, lineBEnd)) { 
       return true; 
      } 

     } // inner loop 

    } // outer loop 

} 

static Boolean lineSegmentsIntersect(Point aInitial, Point aFinal, Point bInitial, Point bFinal) { 
    // left as an exercise to the reader 
} 

कैसे lineSegmentsIntersect समारोह को लागू करने का एक उदाहरण के लिए How do you detect where two line segments intersect? देखें।

संबंधित मुद्दे