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)