Libgdx-旋转边界框的最小值和最大值

Libgdx-旋转边界框的最小值和最大值,libgdx,bounding-box,Libgdx,Bounding Box,我正在运行下面的简单代码: 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.

我正在运行下面的简单代码:

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());
日志显示:

minx-2.0//ok,正如预期的那样
maxx 2.0//正常,如预期
miny-2.0//我希望是-1
maxy 2.0//我希望是1
dimx 4.0//正常,如预期
昏暗的4.0//我希望是2

我的理解是,上面的代码应该简单地围绕Z轴旋转一个90°的2D矩形。日志结果表明情况并非如此(即y坐标没有变化)

有人能帮我理解我错在哪里吗?
非常感谢

经过一些代码剖析后,我相信这是libGDX错误。这是
BoundingBox的
mul
函数

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;
    }
ext

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
函数对当前点执行一些
min
max
。这就是造成你的错误的原因。该功能应在任何操作之前重置最小和最大点(分别为正无穷大和负无穷大)

编辑:


看起来它已经被固定在墙上了。您可以每晚使用最新版本,也可以等待下一版本。

非常感谢您的支持。我正在使用Gradle安装程序,它似乎还没有解决这个问题