【问题标题】:3D Rotation warps cube3D 旋转扭曲立方体
【发布时间】:2021-08-04 09:46:42
【问题描述】:

在过去的几周里,我一直在创建一个 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)

我最好不使用外部模块。

【问题讨论】:

    标签: java 3d rotation java-3d


    【解决方案1】:

    你需要临时变量 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多