2011-09-06 19 views

Odpowiedz

-1

Najprostszym sposobem jest sprawdzenie, czy każdy odcinek przecina się z innym segmentem linii. Segment linii składa się z par sąsiednich punktów na ścieżce. Ścieżka z 10 punktami ma 9 segmentów linii.

Oto przykład tego, jak można to osiągnąć.

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 
} 

Zobacz How do you detect where two line segments intersect? na przykład jak zaimplementować funkcję lineSegmentsIntersect.

Powiązane problemy