DirectXを使用している者です。OSは、Win7です。
1.最初は原点にある物体の正面にカメラがあり、カメラがその物体を写している。マ
ウスはウインドウの中央にある。
2.マウスを動かすと、カメラが物体の方向を見たまま、物体を中心に円運動しながら
物体の背後に移動する。
という処理をしたいと思い、下記のようなコードを書きました。
//ウインドウの中央を0,0とするマウスの位置
MousePosX_to_center=(input.get_MousePosX()-window_width/2 );
MousePosY_to_center=(input.get_MousePosY()-window_height/2 );
//マウスの位置から、物体に対するカメラの角度を計算
xrad= (float)MousePosX_to_center/ ((float)window_width/2.0f) * D3DX_PI;
yrad= (float)MousePosY_to_center /((float) window_height/2.0f) * D3DX_PI;
zrad=sqrt(pow((float)MousePosX_to_center,2)+pow((float)
MousePosY_to_center,2)) / window_width * D3DX_PI ;
//カメラの実際の位置
CameraPosX=obj_to_camera*sin(xrad);
CameraPosY=obj_to_camera*sin(yrad);
CameraPosZ=obj_to_camera*cos(zrad)*-1;
//ビュー変換
D3DXMatrixLookAtLH( &View, &D3DXVECTOR3(CameraPosX,CameraPosY ,CameraPosZ ),
&D3DXVECTOR3(0, 0, 0), &D3DXVECTOR3( 0, 1, 0) );
g_pD3DDev->SetTransform(D3DTS_VIEW, &View);
すると、1.はできたのですが、そこからマウスを動かすと、2.の途中で、初期位置
から、物体に対し45度ぐらいの所で止まり、以降は物体に近づくだけで、背後に周って
くれません。
このような場合、どう対処するとよいでしょうか。
お忙しいとは存じますが、よろしくお願いします。