www.pudn.com > D3DITEM01.rar > D3DCamera.h


#pragma once 
 
#ifndef _D3DCAMERA_H 
#define _D3DCAMERA_H 
 
#include 
#include 
#include 
 
class CCamera 
{ 
private: 
	D3DXMATRIX	m_ViewTransMatrix;		//视图变换矩阵 
	D3DXMATRIX	m_ProjTransMatrix;		//投影变换矩阵 
	D3DXVECTOR3	m_Eye;					//摄象机位置(点) 
	D3DXVECTOR3	m_At;					//摄象机观察点(点) 
	D3DXVECTOR3	m_Up;					//摄象机正上方(方向) 
	D3DXVECTOR3 m_vDelta;				//摄像机的平移量 
	float		m_fFOV;					//视角弧度 
	float		m_fAspect;				//观察表面长宽比 
	float		m_fNear;				//近观察表面的距离 
	float		m_fFar;					//远观察表面的距离 
	float		m_fCameraYawAngle;		//摄像机绕Y轴旋转的欧拉角 
	float		m_fCameraPitchAngle;	//摄像机绕X轴旋转的欧拉角 
	float		m_fRotationYVelocity;	//摄像机绕Y轴旋转的角位移速度 
	float		m_fRotationXVelocity;	//摄像机绕X轴旋转的角位移速度 
	float		m_fTranslationVelocity;	//摄像机的平移速度 
	float		m_fMaxXPitch;			//摄像机绕X轴旋转的俯仰角最大值 
	float		m_fMinXPitch;			//摄像机绕X轴旋转的俯仰角最小值 
	bool		m_bIsRot;				//用户是否旋转了摄像机 
	POINT		m_LastPoint;			//上次游戏循环帧中的鼠标位置 
	 
public: 
 
	CCamera();				//构造 
 
	virtual ~CCamera();		//析构 
 
	void InitCamera(				//初始化 
		D3DXVECTOR3& Eye,			//摄象机位置(点) 
		D3DXVECTOR3& At,			//摄象机观察点(点) 
		D3DXVECTOR3& Up,			//摄象机正上方(方向) 
		float FOV,					//视角弧度 
		float Aspect,				//观察表面长宽比 
		float Near,					//近观察表面的距离 
		float Far,					//远观察表面的距离 
 
		float RotationYVelocity,	//摄像机绕Y轴旋转的角位移速度 
		float RotationXVelocity,	//摄像机绕X轴旋转的角位移速度 
		float TranslationVelocity,	//摄像机的平移速度 
		float MaxXPitch,			//摄像机绕X轴旋转的俯仰角最大值 
		float MinXPitch);			//摄像机绕X轴旋转的俯仰角最小值 
 
	void GetKeyboardInput(float);	//键盘响应 
 
	void Update(); //更新矩阵 
	 
	void SetMatrix(LPDIRECT3DDEVICE9  pDevice);		//设置距阵 
 
	const D3DXMATRIX* GetViewTransMatrix() const;	//得到当前的视图变换矩阵 
 
	const D3DXMATRIX* GetProjTransMatrix() const;	//返回当前的投影变换矩阵 
 
	const D3DXVECTOR3* GetEye() const;				//返回当前的摄像机位置 
}; 
 
#endif