zfxCamera.h
上传用户:junlon
上传日期:2022-01-05
资源大小:39075k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //--------------------------------------------------------------------------------------
  2. // 文件: zfxCamera.h, 作者:曾凡喜
  3. //
  4. // 封装了照相机类 ,构造时默认视点是(0, 0, 0),默认视见方向为(0, 0, 1)
  5. //
  6. // 该类封装了照相机的视口矩阵和投影矩阵
  7. //
  8. // 版权归作者所有,未经允许不得利用源代码进行任何商业活动
  9. //
  10. // 完成时间:2007-11-22
  11. //--------------------------------------------------------------------------------------
  12. #pragma once
  13. #ifndef __ZFXCAMERA__H__INCLUDED__
  14. #define __ZFXCAMERA__H__INCLUDED__
  15. class CZFXCamera{
  16. public:
  17. CZFXCamera();
  18. ~CZFXCamera();
  19. public:
  20. // 获取摄像机的视口矩阵
  21. D3DXMATRIX* GetViewMatrix(D3DXMATRIX* pMatView);
  22. // 获取摄像机的投影矩阵
  23. D3DXMATRIX* GetProjMatrix(D3DXMATRIX* pMatProj);
  24. // 改变摄像机状态的三个函数
  25. void Walk(float x, float z);
  26. void Pitch(float fAngle);// 调用该函数改变相机的俯仰角
  27. void Yaw(float fYaw);    // 调用该函数改变相机的偏航角
  28. D3DXVECTOR3* GetLookVec(D3DXVECTOR3 *lookAtVec);
  29. float GetPosX()  { return m_x; }
  30. float GetPosY()  { return m_y; }
  31. float GetPosZ()  { return m_z; }
  32. // 设置摄像机的原始位置
  33. void SetPosX(float x);
  34. void SetPosY(float y);
  35. void SetPosZ(float z);
  36. // 设置摄像机的镜头属性
  37. void SetProjProp(float zn, float zf, float fovy, float Aspect);
  38. // 改变摄像机镜头的广角属性,默认为增大广角(increase == ture, 当该值设为false时为缩小广角)
  39. // 默认每次增大为1度(当然这个值也可通过变量increment设置)
  40. void Change_fovy(bool increase = true, float increment = D3DX_PI/180);
  41. protected:
  42. // 以下变量决定了摄像机的视口矩阵
  43. float m_x, m_y, m_z;   //摄像机位置
  44. float m_pitchAngle;//俯仰角
  45. float m_yawAngle;  //偏航角
  46. // 以下变量决定了摄像机的投影矩阵
  47. float m_zn, m_zf;  //近距离,远距离
  48. float m_fovy;      //视野角度
  49. float m_Aspect;    //高宽比
  50. };
  51. #endif  //__ZFXCAMERA__H__INCLUDED__