我编写了以下代码来将立方体在 x 轴上旋转一整圈,然后在 y 轴上来回旋转。代码生成所需的结果。
- (void)update
{
if (_x_axis) {
if (i >= 6.28) {
i = 0;
_x_axis = false;
} else {
float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f), aspect, 0.1f, 100.0f);
self.effect.transform.projectionMatrix = projectionMatrix;
GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.0f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, i, 0.0f, 1.0f, 0.0f);
self.effect.transform.modelviewMatrix = modelViewMatrix;
i += .01;
}
} else {
if (i >= 6.28) {
i = 0;
_x_axis = true;
} else {
float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f), aspect, 0.1f, 100.0f);
self.effect.transform.projectionMatrix = projectionMatrix;
GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.0f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, i, 1.0f, 0.0f, 0.0f);
self.effect.transform.modelviewMatrix = modelViewMatrix;
i += .01;
}
}
我的问题是,当我将增量 i 更改为 .02 或 .2 或 .3 之类的值时,为什么立方体仍然恰好旋转一圈?
如果 i 增加 0.2,则在转换中使用的 i 的最后一个值将是 6.2,然后它会被重置并更改旋转轴。基本上,什么是保持立方体水平?我认为随着 i 的较大增量,立方体在切换轴之前不会旋转一整圈。