zfxCamera.h
资源名称:Direct3D.rar [点击查看]
上传用户:junlon
上传日期:2022-01-05
资源大小:39075k
文件大小:2k
源码类别:
DirextX编程
开发平台:
Visual C++
- //--------------------------------------------------------------------------------------
- // 文件: zfxCamera.h, 作者:曾凡喜
- //
- // 封装了照相机类 ,构造时默认视点是(0, 0, 0),默认视见方向为(0, 0, 1)
- //
- // 该类封装了照相机的视口矩阵和投影矩阵
- //
- // 版权归作者所有,未经允许不得利用源代码进行任何商业活动
- //
- // 完成时间:2007-11-22
- //--------------------------------------------------------------------------------------
- #pragma once
- #ifndef __ZFXCAMERA__H__INCLUDED__
- #define __ZFXCAMERA__H__INCLUDED__
- class CZFXCamera{
- public:
- CZFXCamera();
- ~CZFXCamera();
- public:
- // 获取摄像机的视口矩阵
- D3DXMATRIX* GetViewMatrix(D3DXMATRIX* pMatView);
- // 获取摄像机的投影矩阵
- D3DXMATRIX* GetProjMatrix(D3DXMATRIX* pMatProj);
- // 改变摄像机状态的三个函数
- void Walk(float x, float z);
- void Pitch(float fAngle);// 调用该函数改变相机的俯仰角
- void Yaw(float fYaw); // 调用该函数改变相机的偏航角
- D3DXVECTOR3* GetLookVec(D3DXVECTOR3 *lookAtVec);
- float GetPosX() { return m_x; }
- float GetPosY() { return m_y; }
- float GetPosZ() { return m_z; }
- // 设置摄像机的原始位置
- void SetPosX(float x);
- void SetPosY(float y);
- void SetPosZ(float z);
- // 设置摄像机的镜头属性
- void SetProjProp(float zn, float zf, float fovy, float Aspect);
- // 改变摄像机镜头的广角属性,默认为增大广角(increase == ture, 当该值设为false时为缩小广角)
- // 默认每次增大为1度(当然这个值也可通过变量increment设置)
- void Change_fovy(bool increase = true, float increment = D3DX_PI/180);
- protected:
- // 以下变量决定了摄像机的视口矩阵
- float m_x, m_y, m_z; //摄像机位置
- float m_pitchAngle;//俯仰角
- float m_yawAngle; //偏航角
- // 以下变量决定了摄像机的投影矩阵
- float m_zn, m_zf; //近距离,远距离
- float m_fovy; //视野角度
- float m_Aspect; //高宽比
- };
- #endif //__ZFXCAMERA__H__INCLUDED__