gluLookAt 関数のパラメーターを変更することで、ユーザーが自分自身を見回すことができる単純なアプリケーションを実装しようとしています。次の方法で y 軸を中心とした回転を実装しました。
float cx1;
float cz1;
float d1 = cx - eyex;
float d2 = cz - eyez;
cx1 = d2*sin(alfa*PI / 180) + d1*cos(alfa*PI / 180);
cz1 = d2*cos(alfa*PI / 180) - d1*sin(alfa*PI / 180);
yRotationAngle = yRotationAngle +alfa;
cx = cx1 + eyex;
cz = cz1 + eyez;
これは正常に機能しますが、x 軸を中心に回転しようとすると、目的の動作が得られません。カメラを「上」と「下」に回転させたかったのですが、その瞬間に私がいる特定の方向に向けました。x 軸を中心に回転するコードは、次のように実装されています。 float d1 = cy - eyey; float d2 = cz - eyez;
//rotate around x
cy1 = cos(angleToRotate) * d1 - sin(angleToRotate) * d2;
cz1 = sin(angleToRotate) * d1 + cos(angleToRotate) * d2;
cy = cy1 + eyey;
cz = cz1 + eyez;
xを中心に回転する前に、y軸を中心に逆回転する必要がありますか? もしそうなら、回転するのに必要な角度の値は?