Java 立方体三维点旋转X&;Z
包括有关目标的详细信息:Java 立方体三维点旋转X&;Z,java,opengl-es,rotation,minecraft,euler-angles,Java,Opengl Es,Rotation,Minecraft,Euler Angles,包括有关目标的详细信息: 首先,我的目标是让点围绕X,Y,Z轴旋转立方体,从而旋转立方体本身 描述期望值: 我希望在绕X轴旋转17.18°后得到: 我希望在绕Z轴旋转17.18°后得到: 实际结果: 黑色形状是没有旋转的默认立方体 白色形状是旋转的立方体 使用我的公式,绕X轴旋转17.18°后的实际结果: 使用我的公式,绕Z轴旋转17.18°后的实际结果: 展示您的尝试,告诉我们您(在本网站或其他地方)发现了什么,以及为什么它不能满足您的需求。当你提供研究时,你
- 首先,我的目标是让点围绕X,Y,Z轴旋转立方体,从而旋转立方体本身
- 我希望在绕X轴旋转17.18°后得到:
- 我希望在绕Z轴旋转17.18°后得到:
- 黑色形状是没有旋转的默认立方体
- 白色形状是旋转的立方体
- 使用我的公式,绕X轴旋转17.18°后的实际结果:
- 使用我的公式,绕Z轴旋转17.18°后的实际结果:
- 首先,我使用Java,因为我的问题是我的Minecraft虚拟形状与真实形状不符李>
public void rotateX(){
对于(int i=0;i }
您的旋转方法是正确的,但它们围绕穿过原点的轴旋转
您希望它们围绕穿过对象中心的轴旋转。您看不到围绕Y轴旋转的问题,因为它恰好穿过立方体的中心
可以通过在旋转前将对象“移动”到原点,然后在旋转后将其移回原点来修复此问题。例如,对于X旋转:
double y = vector.getY() - objectCenterY;
double z = vector.getZ() - objectCenterZ;
vector.setY(y * cosTheta - z * sinTheta + objectCenterY);
vector.setZ(z * cosTheta + y * sinTheta + objectCenterZ);