2011-11-01 13 views
12

私はパスの特定の点のペアを見つけることができたかどうかを質問しました。しかし、今度は、パスのすべてのポイントを知る方法があるかどうかを知りたいですか? (私はそうした方法を見つけることができませんでしたが、Javaはこれを行う手段をAndroidに提供していないので残念です)Androidでパス内のすべてのポイントを見つけるにはどうすればよいですか?

私は複数の幾何学的グラフを持っているので、それらが交差するところを見るためのポイント。

あなたのコードのいくつかの時点で、あなたは正確に(ジオ)のポイントを知っていることを意味しPathを作成した場合、私は、任意の有用回答

答えて

2

を感謝しています。この点をArrayListなどに入れてみてはどうでしょうか?

path.lineTo(point.x, point.y); 

をあなたが行うことができます:

yourList.add(point); 
path.lineTo(point.x, point.y); 

を、後であなたがArrayListからすべてのあなたのポイントを得ることができます行う前に、例えばので

Enhanced For Loop SyntaxArrayListを最大3倍高速に実行できることにご注意ください。

+0

私は任意の代替がなかった場合の対処するために何が起こっていたかでした。私は数日間質問を開いたままにしておき、他の方法は示唆されていない場合、私はこれを答えとして受け入れます。 – StartingGroovy

+0

@StartingGroovy最後に、このソリューションを選択した場合、パフォーマンスの向上を利用するために、更新された投稿を参照してください。 – Manos

+0

興味深いことに、私は拡張ループが3倍速かったことに気づいていませんでした:)そのおかげでありがとう! – StartingGroovy

24

あなたはこの単純なスニペットは(私はhereを見た)パスの半分の点の座標を返しますpath.For例上の任意の点の座標を取得するためにPathMeasureを使用することができます。

PathMeasure pm = new PathMeasure(myPath, false); 
//coordinates will be here 
float aCoordinates[] = {0f, 0f}; 

//get point from the middle 
pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null); 

またはこのFlaotPoint点の座標をカプセル化するクラスである、上記のスニペットにおいて

private FlaotPoint[] getPoints() { 
     FlaotPoint[] pointArray = new FlaotPoint[20]; 
     PathMeasure pm = new PathMeasure(path0, false); 
     float length = pm.getLength(); 
     float distance = 0f; 
     float speed = length/20; 
     int counter = 0; 
     float[] aCoordinates = new float[2]; 

     while ((distance < length) && (counter < 20)) { 
      // get point from the path 
      pm.getPosTan(distance, aCoordinates, null); 
      pointArray[counter] = new FlaotPoint(aCoordinates[0], 
        aCoordinates[1]); 
      counter++; 
      distance = distance + speed; 
     } 

     return pointArray; 
    } 

:スニペットはFlaotPoint s.Thatアレイのアレイは、パス上の20点の座標を含む返し

class FlaotPoint { 
     float x, y; 

     public FlaotPoint(float x, float y) { 
      this.x = x; 
      this.y = y; 
     } 

     public float getX() { 
      return x; 
     } 

     public float getY() { 
      return y; 
     } 
    } 

参考
stackoverflow
Animating an image using Path and PathMeasure – Android

関連する問題