4

基本的に15x15の正方形の床(座標が(0,0,0)(0,0,15)(15,0,15)(15,0,0)のクワッド)のシーンがあります。

シーンの中心を(7.5,0,7.5)に設定しました。問題は、シーンの中心を中心にカメラを水平方向に回転させる方法がわからないことです(つまり、カメラにシーンの中心を中心に360度の水平方向の円を回転させます)。私はあなたが罪とcosで何かをする必要があることを知っていますが、正確には何を知りません。

コードは次のとおりです(プレーンC):

//set camera position
//camera height is 17
GLfloat camx=0, camy=17, camz=0;

//set center of scene
GLfloat xref=7.5, yref=0, zref=7.5;

gluLookAt(camx, camy, camz, xref, yref, zref, 0, 1, 0);

//projection is standard gluPerspective, nothing special
gluPerspective(45, (GLdouble)width/(GLdouble)height, 1, 1000);
4

2 に答える 2

5

camx および camz 変数を変更する必要があります。

ウォークスルーするポイントは円上にあり、その座標は によって決定されますx = r*sin(alpha) + 7.5, z = r*cos(alpha) + 7,5。ここで、r は円の半径、アルファは xy 平面とカメラの現在の位置の間の角度です。

もちろん、角度は回転速度とアニメーションの開始からの時間によって異なります。基本的には、直角を設定し、上記の式から座標を計算するだけです。

円座標の詳細については、Wiki を参照してください: http://en.wikipedia.org/wiki/Unit_circle

于 2013-01-02T11:50:58.343 に答える
1

次の 2 つの使い方があると思います。

camxsin/cos を使用して、位置を計算できますcamzこの図は、これがどのように機能するかの良い例です。

別の方法として、カメラを に移動してから7.5, 0, 7.5、必要なカメラ アングルでカメラを回転させます。その後、 でカメラを移動します-7.5, 0, -7.5

于 2013-01-02T11:50:45.087 に答える