2015-02-04 6 views
0

나는 볼록한 다각형을 삼각형으로 만들려고한다. 오른쪽 삼각없이 볼록 다각형 동안 왼쪽에서 삼각형의 엉망진 삼각형

screenshot

은 삼각 폴리곤이다. (둘 다 잘못입니다)하지만, 오른쪽에 하나

나는 삼각형을 만들고 ArrayList에

에 추가 ... 올바른 위치에 있으며, 그것은 꽤 괜찮 볼록 부분을 놓치고 있다는 사실 외에입니다
float[] vertices = polygonObject.getPolygon().getTransformedVertices(); 
    float[] worldVertices = new float[vertices.length]; 

    for (int i = 0; i < vertices.length; ++i) { 
     System.out.println(vertices[i]); 
     worldVertices[i] = vertices[i]/ppt; 
    } 

    // Make triangles 
    Vector<float[]> trianglesVertices = new Vector<float[]>(); 

    EarClippingTriangulator triangulator = new EarClippingTriangulator(); 
    ArrayList<PolygonShape> triangles = new ArrayList<PolygonShape>(); 

    ShortArray pointsCoords = triangulator.computeTriangles(worldVertices); 

    for (int i = 0; i < pointsCoords.size/6; i++) 
    { 
     trianglesVertices.add(new float[] { 
       pointsCoords.get(i*6),  pointsCoords.get(i*6 + 1), 
       pointsCoords.get(i*6 + 2), pointsCoords.get(i*6 + 3), 
       pointsCoords.get(i*6 + 4), pointsCoords.get(i*6 + 5), 
     }); 

     PolygonShape triangleShape = new PolygonShape(); 
     triangleShape.set(trianglesVertices.get(i)); 
     triangles.add(triangleShape); 
    } 

나중에 나는 그 arraylist를 반복하고 시체를 만들지 만, 어떻게 든 libgdx (아마 나, libgdx가 아님)가 완전히 엉망으로 만듭니다.

여기
  for(PolygonShape triangle:triangles){ 
       BodyDef bd = new BodyDef(); 
       bd.type = BodyDef.BodyType.StaticBody; 
       Body body = world.createBody(bd); 
       body.createFixture(triangle, 1); 

       bodies.add(body); 

       triangle.dispose(); 
      } 

나는 또 다른 예를 발견하고는 일 correct shape

+0

을 주셔서 감사하다 질문을 편집했지만, libgdx 프레임 워크에서 EarClippingTriangulator 클래스를 사용하기 때문에 제목에 libgdx를 넣었습니다. 그 점을 언급하는 것이 중요하다고 생각했습니다. – Mars

답변

0

(타일에서 만든) libgdx에서 렌더링을 시도하고있는 모양입니다!

https://github.com/MobiDevelop/maps-editor/blob/master/maps-basic/src/com/mobidevelop/maps/basic/BasicMapRenderer.java#L151

여기

ShortArray pointsCoords = triangulator.computeTriangles(worldVertices); 

잘못된 내가이 배열에서 삼각형을 만드는 한 방법이었다 올바르게 삼각형을 만들 수행하는 코드, LearnCocos2D @

for (int i = 0; i < pointsCoords.size; i += 3) { 
     int v1 = pointsCoords.get(i) * 2; 
     int v2 = pointsCoords.get(i + 1) * 2; 
     int v3 = pointsCoords.get(i + 2) * 2; 

     PolygonShape triangleShape = new PolygonShape(); 
     triangleShape.set(
       new float[]{ 
         worldVertices[v1 + 0], 
         worldVertices[v1 + 1], 
         worldVertices[v2 + 0], 
         worldVertices[v2 + 1], 
         worldVertices[v3 + 0], 
         worldVertices[v3 + 1] 
       } 

     ); 
     triangles.add(triangleShape); 
    } 
+0

제대로 렌더링하려면 볼록한 다각형을 얻었습니까? 나는 당신의 목표 모양과 그것을 떨어 뜨리는 공의 렌더링과 함께 libgdx 예제를 만들 수 있었다. –

+0

안녕하세요. @ 존 나탄! 나는 그랬다. 이 대답의 코드는 나를 위해 그것을 해결합니다. – Mars