www.pudn.com > Game_11.rar > Camera.h


// Camera.h: interface for the CCamera class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_CAMERA_H) 
#define AFX_CAMERA_H 
 
#include "d3dx9.h" 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
class CCamera   
{ 
public: 
	CCamera(LPDIRECT3DDEVICE9 pDevice, 
		LPD3DXVECTOR3 pos); 
	virtual ~CCamera(); 
	void YawPitchAt(float yaw,float pitch); 
	void YawPitchPos(float yaw,float pitch); 
	void Update3DMatrix(); 
	void Update2DMatrix(float scrWidth,float scrHeight); 
	void GetLookAt(LPD3DXVECTOR3 pLookAt)	 
	{ 
		pLookAt->x=	vPos.x+m_Distance*cosf(m_Pitch)*cosf(m_Yaw); 
		pLookAt->y=	vPos.y+m_Distance*sinf(m_Pitch); 
		pLookAt->z= vPos.z+m_Distance*cosf(m_Pitch)*sinf(m_Yaw);  
							 
	}; 
	void MoveAtTo(D3DXVECTOR3 *vLookAt) 
	{ 
		 
		vPos.x=vLookAt->x-m_Distance*cosf(m_Pitch)*cosf(m_Yaw); 
		vPos.y=vLookAt->y-m_Distance*sinf(m_Pitch); 
		vPos.z=vLookAt->z-m_Distance*cosf(m_Pitch)*sinf(m_Yaw); 
		 
	 
	} 
	void MovePosTo(D3DXVECTOR3 *pV) 
	{ 
		vPos=*pV; 
	 
	} 
//	void Move(LPD3DXVECTOR3 pLookAt); 
	void Move(float dSide,float dForward); 
 
	LPD3DXVECTOR3 GetPos()	{return &vPos;}; 
protected: 
	D3DXVECTOR3 vPos; 
 
	float			m_Yaw,m_Pitch; 
	float			m_Distance; 
 
	LPDIRECT3DDEVICE9 m_pDevice; 
 
	//摄像机从vPos观察,方向为:从vPos水平偏角为yaw,仰角为pitch 
}; 
 
#endif // !defined(AFX_CAMERA_H)