5

Androidコードに2つのパスオブジェクトがあります。これらのパスが交差しているかどうかを確認しようとしましたが、できませんでした。パスが交差しているかどうかを確認するにはどうすればよいですか。良い反応をありがとう、ありがとう!

4

3 に答える 3

7

Dheeraj によって与えられた答えには、あなたの質問に対する答えがあります。

https://stackoverflow.com/a/9918830/1268168

彼の答えのコピーと貼り付けは次のとおりです。

私が考えることができる別の方法は、パスを使用して構築できる単純なオブジェクトで機能します。

境界がパスで表される 2 つのオブジェクトを取得したら、次のことを試してください。

Path path1 = new Path();
path1.addCircle(10, 10, 4, Path.Direction.CW);
Path path2 = new Path();
path2.addCircle(15, 15, 8, Path.Direction.CW);

Region region1 = new Region();
region1.setPath(path1, clip);
Region region2 = new Region();
region2.setPath(path2, clip);

if (!region1.quickReject(region2) && region1.op(region2, Region.Op.INTERSECT)) {
    // Collision!
}

オブジェクトをパスとして取得したら、drawPath() を使用して直接描画できます。パスを transform() することで移動を実行することもできます。

私の理解では、上記のコードの変数「clip」はパスの境界ボックスでなければなりません。私が使用する一般的な目的のために

Region clip = new Region(0, 0, layoutWidth, layoutHeight);

レイアウトの幅と高さは、キャンバスやアクティビティなどのサイズにすることができます。

于 2012-11-19T07:53:02.520 に答える
5

Region.opを見てください

私はそれを試していませんが、使用することをお勧めします:

Region.setPath(Path path, Region clip);

両方のパスからリージョンを取得するには、その後次を使用できます。

if (region1.op(region2,Region.Op.INTERSECT)) {
  // intersection
}

交差点を確認するには...

于 2012-06-25T07:01:49.597 に答える