次のコードを書いて、立方体を x 軸で 1 回転、次に 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 などに変更しても、立方体が正確に 1 回転するのはなぜですか?
i が .2 ずつ増加する場合、変換で使用される i の最後の値は、リセットされて回転軸が変更される前に 6.2 になります。基本的に、立方体のレベルを維持しているのは何ですか? i の増分が大きいと、立方体は軸を切り替える前に完全に回転しないと思います。