3D 旋转扭曲立方体

3D Rotation warps cube

过去几周我一直在创建一个 3D 引擎,并且我已经设法为我的对象进行平移和缩放。但是我的轮换有点问题。 当我尝试在 z 轴上将我的立方体旋转 45 度时,它变得扭曲了。

Example

这里是我所有的立方体旋转计算的地方。 'vertices' 是一个包含我的立方体中所有点的数组。代码仅限于沿z轴旋转。

    public void rotate(vec3 r) {
    rotation.add(r);

    float sinZ = (float) Math.sin(Math.toRadians(r.z));
    float cosZ = (float) Math.cos(Math.toRadians(r.z));

    for (int vdx = 0; vdx < vertices.size(); vdx++) {
        vec3 v = vertices.get(vdx);

        v.x = v.x * cosZ - v.y * sinZ;

        v.y = v.y * cosZ + v.x * sinZ;

        vertices.set(vdx, v);
    }
}

假设立方体位于位置 (0, 0, 0)

我希望在不使用外部模块的情况下执行此操作。

您需要临时变量 x, y,例如:

    x = v.x * cosZ - v.y * sinZ;
    y = v.y * cosZ + v.x * sinZ;

    v.x = x;
    v.y = y;

否则v.y的计算使用了错误的v.x