現在描画されているパスが既存のパスに接しているかどうかを検出する方法があるかどうかを知りたいと思います。既存のパスは描画されるか、背景イメージの一部です。 の後にこのを見つけることができれば、現在のパスが完全に描画されることも役立ちます。 最悪のシナリオでは、2つのパスが接触しているかどうかを確認するためにピクセル単位のチェックを行うことはできますか?Androidで重複したパスを検出する
答えて
パスを使用して行を定義し、android.graphics.Regionをそのパスに設定します。彼らはそれを見て、見ていただきました!にいくつかの参照は、物事を少し明確に助けることができるかのスクリーンショットへのリンクを追加
region1.op(region2, Op.INTERSECT);
リストに行を保存し、リスト内のすべての行に対して描画する行をチェックして、交差しているかどうかを確認できます。ここでstackoverflowで線の交差を検出する方法についてたくさんの回答があります。
ArrayList<Pair<Pair<Integer,Integer>,Pair<Integer,Integer>>> lineList = new ArrayList<Pair<Pair<Integer, Integer>, Pair<Integer, Integer>>>();
// add all your lines to the list
// lineList.add(line);
// handle the last line
int startX = 10;
int startY = 20;
int endX = 40;
int endY = 50;
Pair<Integer,Integer> lineStart = new Pair<Integer, Integer>(startX, startY);
Pair<Integer,Integer> lineEnd = new Pair<Integer, Integer>(startX, startY);
Pair<Pair<Integer,Integer>,Pair<Integer,Integer>> lastLine = new Pair<Pair<Integer, Integer>, Pair<Integer, Integer>>(lineStart, lineEnd);
for(Pair<Pair<Integer,Integer>,Pair<Integer,Integer>> l: lineList){
// if "lastLine" intersects "l" do you stuff
}
リストにどのように行を保存するのだろうか?私はラインのすべてのピクセルの座標を保存しますか? – deeJ
ペアのペアを保存するだけです。 int startX = 10; int startY = 20; int endX = 40; int endY = 50; ペア<整数、整数> lineStart =新しいペア<整数、整数>(startX、startY); ペア<整数、整数> lineEnd =新しいペア<整数、整数>(startX、startY); ペア<ペア<整数、整数>、ペア<整数、整数>ライン=新しいペア(ライン開始、ラインエンド); – erbsman
これは曲線の場合はうまくいかないでしょうか?それがその質問から暗示されていないのであれば、残念です。 – deeJ
で交差したりしませ天気を後でお互いに対してすべての地域をご確認ください。 – erbsman
スクリーンショットが追加されました。 – deeJ