2011-09-06 16 views

cevap

-1

basit yolu herhangi çizgi segmenti, diğer satır segment ile kesişiyor olmadığını kontrol etmektir: Burada daha iyi ne demek istediğimi açıklamak için bir görüntü var. Bir çizgi parçası, yoldaki bitişik nokta çiftlerinden oluşur. 10 noktalı bir yol 9 satır segmentine sahiptir.

İşte bunun nasıl olabileceğine dair bir örnek.

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 fonksiyonunu nasıl uygulanacağı bir örnek için How do you detect where two line segments intersect? bakınız.

İlgili konular