2016-07-10 3 views
0

ShapeRenderer`` 행 방법 (Vector2 first, Vector2 second)을 통해 연결하는 점들을 얻는 방법을 찾으려고합니다. 그래서 도움을주는 이미지와 코드를 설명해 드리겠습니다.마지막 점을 제외한 가장 가까운 점 찾기 LibGDX Java

Vector2 유형 목록이 있으며 가장 가까운 다음 버텍스를 찾아 첫 번째 점을 제외해야합니다. 여기 내가 의미하는 바를 묘사 한 이미지가 있습니다. 나는 이미지에서 루프의 반복을 표시했다.

enter image description here

제 1 회 반복.) 그것은 가장 가까운 지점을 찾습니다.

두 번째 반복.) 첫 번째 점은 더 가깝지만 여전히 세 번째 점을 선택합니다. 이것은 핵심 문제입니다. 첫 번째 점이 더 가까운 점에도 두 번째 점이 세 번째 점을 찾도록해야합니다.

다음은이 작업을 시도한 코드입니다.

private void cleanVertices(Array<Vector2> verts){ 

    newVerts = new Array<Vector2>(); 
    Vector2 tmpKey, tmpClose = null; 


    tmpKey = verts.get(0); 
    for(int i = 0; i < verts.size; i++){ 

     for(int k = 0; k < (verts.size - 1); k++){ 
      if(k == i) 
       continue; 
      //Distance formula 
      double dist = MathFactory.distance(verts.get(i), verts.get(k)); 
      if(MathFactory.distance(verts.get(i), verts.get(k + 1)) < dist){ 

       tmpClose = verts.get(k + 1); 
      }else 
       tmpClose = verts.get(i); 


     } 
     tmpKey = tmpClose; 
     newVerts.add(tmpClose); 
    } 

}' 

이것은 내가 원하는 것을 성취하지 않고 대신에 x 축에 가장 가까운 점들을 연결하는 것처럼 보입니다. 나는 필사적으로 도움이 필요하다. 감사!

답변

0

문제는 두 번째 꼭지점에 가장 가까운 꼭지점을 찾는 것입니다. 두 번째 꼭지점은 첫 번째 고려하지 않고 세 번째입니다. 두 번째 for 루프를 모든 반복에서 첫 번째 for 루프의 위치에서 시작합니다 (k = i). 두 번째 for 루프가 거리를 계산하는 점으로 첫 번째 정점을 고려하지 않는다는 것을 의미합니다.

1

입력 매개 변수 verts (예 : 에 동일한 참조 목록을 포함하는 새로운 Array)의 전체 복사본을 만듭니다. 그런 다음 반복하지만, 은 다음 "가장 가까운"인접 항목으로 선택하면 각 지점을 제거합니다.

나는 Array 클래스에 익숙하지 않지만 요소를 제거 할 때 ArrayList은 올바른 동작을합니다. 각 지점에서 방문하지 않은 지점 만 목록에 남아있게됩니다.

관련 문제