2011-09-06 6 views

答えて

-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?を参照してください。

関連する問題