// 以下をメンバ変数に
float mRotate= 0.0f;
static final float ROT_VAL = (float) (Math.PI/20.0); // 1フレームの回転量
static final float ROT_RADIUS = 100.0f; // カメラの距離
// 三角関数で毎回計算する
float x = (float) (Math.cos(mRotate) * ROT_RADIUS);
float z = (float) (Math.sin(mRotate) * ROT_RADIUS);
mRotate += ROT_VAL;
glu.gluLookAt(x, 0.0, z, 0.0,0.0,0.0, 0.0,1.0,0.0);
// 加法定理を使うのなら以下のようになる
// 以下をメンバ変数に
float mAccSin= 0.0f;
float mAccCos= 0.0f;
float mSumSin= 0.0f;
float mSumCos= 0.0f;
static final float ROT_VAL = (float) (Math.PI/20.0); // 1フレームの回転量
static final float ROT_RADIUS = 100.0f; // カメラの距離
// 以下の処理をフレームごとに実行する。
float tmp = mAccCos * mSumCos - mAccSin * mSumSin;
mSumSin = mAccSin * mSumCos + mAccCos * mSumSin;
mSumCos = tmp;
float x = (float) (mSumCos * ROT_RADIUS);
float z = (float) (mSumSin * ROT_RADIUS);
glu.gluLookAt(x, 0.0, z, 0.0,0.0,0.0, 0.0,1.0,0.0);
|