1

カメラを 3D キューブ内に配置しました -

public void display(GLAutoDrawable drawable) {
        ...
        glu.gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
        ...
}

こんな感じです-(各色-サイドロック)-

ここに画像の説明を入力

今、私は軸 X を中心に回転してカメラを見ようとしています (3 centerX, centerY, centerZ) - この回転式に従って -

ここに画像の説明を入力

Z の値がマイナスになるまではうまく機能します。その後、カメラの視線が X 軸の反対側に回転し始めます。

(centerX,centerY,centerZ)このバグの範囲内の値を示します-

1.0 -1.2817129 0.59767246 //ok
1.0 -1.3289262 0.4836895 // ok
1.0 -1.3660256 0.36602536 //ok
1.0 -1.3927287 0.24557555 // ok
1.0 -1.4088323 0.12325676 //ok
1.0 -1.4142138 -9.784749E-8 // ok for last time
1.0 -1.4088323 -0.12325695 // rotate to other side of X
1.0 -1.3927287 -0.24557574  // so on ... 

それを修正して 360 度回転させる方法を教えてください。

編集:

(upX,upY,upZ)この場合も回転する必要がありますか?

4

1 に答える 1

1

center - eyeではなく、X 軸を中心に方向ベクトルを回転させる必要がありcenterます。全体の計算は になりますcenter = eye + Rot(center - eye)

于 2013-05-26T09:33:24.933 に答える