2014-11-06 4 views
1

나는 아래의 간단한 코드 실행하고 회전 :Libgdx -의 최소 및 최대 경계 상자

BoundingBox bounds = new BoundingBox(); 
Vector3 vmin = new Vector3(); 
Vector3 vmax = new Vector3(); 

vmin.x = -1; 
vmin.y = -2; 
vmin.z = 0; 
vmax.x = 1; 
vmax.y = 2; 
vmax.z = 0; 
bounds.set(vmin,vmax); 

Matrix4 mrot = new Matrix4(); 
mrot.setToRotation(0, 0, 1, 90); 
bounds.mul(mrot); 

Gdx.app.log("xxx","minx " + bounds.min.x); 
Gdx.app.log("xxx","maxx " + bounds.max.x); 
Gdx.app.log("xxx","miny " + bounds.min.y); 
Gdx.app.log("xxx","maxy " + bounds.max.y); 
Gdx.app.log("xxx","dimx " + bounds.getWidth()); 
Gdx.app.log("xxx","dimy " + bounds.getHeight()); 

로그 보여줍니다 : 예상대로,

할망구 -2.0 // 확인을
MAXX 2.0 // 좋아, 예상대로
miny -2.0 // -1을 기대합니다!
maxy 2.0 // 1을 기대합니다!
dimx 4.0 // 예상대로
dimy 4.0 // 나는 2를 기대합니다!

위의 코드는 단순히 Z 축을 중심으로 90 도의 2D 직사각형을 회전해야한다는 것을 알고 있습니다. 로그의 결과는 그렇지 않습니다 (즉, y 좌표가 변경되지 않음).

어디에서 오인을 이해할 수 있습니까? 많은 감사

답변

0

일부 코드 해부 후 나는 libGDX 버그라고 생각합니다. 당신이 자세히 보면

public BoundingBox ext (Vector3 point) { 
     return this.set(min.set(min(min.x, point.x), min(min.y, point.y), min(min.z, point.z)), 
      max.set(Math.max(max.x, point.x), Math.max(max.y, point.y), Math.max(max.z, point.z))); 
    } 

ext 함수는 현재 포인트 일부 minmax을 수행 즉 BoundingBox

public BoundingBox mul (Matrix4 transform) { 
     final float x0 = min.x, y0 = min.y, z0 = min.z, x1 = max.x, y1 = max.y, z1 = max.z; 
     ext(tmpVector.set(x0, y0, z0).mul(transform)); 
     ext(tmpVector.set(x0, y0, z1).mul(transform)); 
     ext(tmpVector.set(x0, y1, z0).mul(transform)); 
     ext(tmpVector.set(x0, y1, z1).mul(transform)); 
     ext(tmpVector.set(x1, y0, z0).mul(transform)); 
     ext(tmpVector.set(x1, y0, z1).mul(transform)); 
     ext(tmpVector.set(x1, y1, z0).mul(transform)); 
     ext(tmpVector.set(x1, y1, z1).mul(transform)); 
     return this; 
    } 

그리고 extmul 기능입니다. 그게 당신의 실수의 원인입니다. 이 함수는 작업 전에 POSITIVE_INFINITY 및 NEGATIVE_INFINITY에 대한 최소 및 최대 점을 재설정해야합니다.

편집 : 이미 git repository에 고정 된 것 같다

. 최신 야간을 사용하거나 다음 릴리스를 기다릴 수 있습니다.

+0

많은 분들께 감사드립니다. 아직이 문제를 해결하지 못한 것 같은 Gradle 설정 앱을 사용하고 있습니다. – Francois