2012-04-12 2 views
5

enter image description here 현재 그려진 경로가 기존 경로를 건 드리거나 교차하는지 알아내는 방법이 있는지 알고 싶습니다. 기존 경로는 그려 지거나 배경 이미지의 일부입니다. 뒤에 을 찾으면 현재 경로가 완전히 그려집니다. 최악의 경우 두 개의 경로가 만나는 지 확인하기 위해 픽셀 별 픽셀 검사를 수행 할 수 있습니까?안드로이드에서 겹쳐진 경로 감지하기

+0

에 의해. – erbsman

+0

스크린 샷이 추가되었습니다. – deeJ

답변

0

경로를 사용하여 선을 정의한 다음 android.graphics.Region을 해당 경로로 설정하십시오. 나중에 서로 교차 어떠했는지 서로에 대한 모든 지역을 확인 여부를 어떻게 보이는지의 스크린 샷에 대한 링크를 추가 및 본 뭐죠 일부 참조가 일을 조금 명확히 도움이 될 수

region1.op(region2, Op.INTERSECT); 
+0

영역이 닫힌 경로이므로 항상 닫힌 경로를 그리지 않으므로이 작업이 제대로 수행되지 않습니까? 아니면 여기에 뭔가 빠졌나요? – erbsman

+0

무언가를 그렸다면 x와 y 차원에서 폭을 갖게됩니다. 그는 그 주위에 폐쇄 형 경로를 만들 수 있습니다. 적어도 하나의 폭이 그려져 있습니다. – Bondax

+0

PointF [] 배열에서 Path를 어떻게 만들 수 있습니까? 이 배열에있는 모든 점의 좌표를 얻었습니다. – deeJ

0

목록에 줄을 저장 한 다음 목록에있는 모든 줄에 대해 그 줄이 교차하는지 확인할 수 있습니다. 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 
    } 
+0

목록에 줄을 저장하는 방법이 궁금합니다. 선의 모든 픽셀 좌표를 저장합니까? – deeJ

+0

페어 쌍을 저장하면됩니다. int startX = 10; int startY = 20; int endX = 40; int endY = 50; 쌍 <정수, 정수> lineStart = 새 쌍 <정수, 정수> (startX, startY); 쌍 <정수, 정수> lineEnd = 새 쌍 <정수, 정수> (startX, startY); 쌍 <쌍 <정수, 정수>, 쌍 <정수, 정수 >> line = 새 쌍 (lineStart, lineEnd); – erbsman

+0

이것은 곡선에 맞지 않습니다. 맞습니까? 그것이 그 질문에서 암시되지 않았다면 나는 유감 스럽다. – deeJ

관련 문제