सबसे आसान तरीका है यदि कोई रेखा खंड किसी अन्य रेखा खंड के साथ काटती है की जाँच करने के लिए है: यहाँ एक स्क्रीनशॉट बेहतर समझाने के लिए मैं क्या मतलब है। एक रेखा खंड पथ में आसन्न बिंदुओं के जोड़े से बना है। 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? देखें।
स्रोत
2012-10-05 00:47:25