【发布时间】:2021-08-04 09:46:42
【问题描述】:
在过去的几周里,我一直在创建一个 3D 引擎,并且我已经成功地为我的对象进行了平移和缩放。但是我的轮换有点小问题。 当我尝试在 z 轴上将立方体旋转 45 度时,它会变形。
这是我对立方体旋转的所有计算所在。 '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)
我最好不使用外部模块。
【问题讨论】: