⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camera.h

📁 涉及windows游戏编程中的一些源码
💻 H
字号:
/**********************************************************
  SimNature Ver1.0.0
  Copyright : Panliliang (Stanly Lee)
  2002 - 2003
  Alright reserved!
  All Noncommeric use is Free!

  潘李亮版权所有 
             2003-2003
  本程序的所有非商业化使用为免费代码。

  E- Mial: Panliliang@etang.com
		   Xheartblue@etang.com 




  模块名称:
  功能描述:

  版本:
  作者:

**********************************************************/
#ifndef _CAMERA_H_
#define _CAMERA_H_

#include "OpenGLCom.h"
#include "MMath.h"
typedef struct
{
	int     id;//摄影机的唯一编号
	MVECTOR up;
	MPOINT  pos;
	MPOINT  target;
	
	MVECTOR vdir;
	MVECTOR vup;

	float vangle;
	float far_dist;
	float near_dist;	
}CAMERA_INFO;

typedef struct
{
	float zoom_angle;
	float factor;
}ZOOM_INFO;

class CCamera
{

public:
	virtual void  SetZoomFactor(float factor) =0;
	virtual float GetZoomFactor()=0;
	virtual void  SetZoomAngle(float angle)=0;
	virtual float GetZoomAngle()=0;
	virtual void  SetViewerAngle(float angle)=0;
	virtual float GetViewerAngle()=0;
	virtual void  ZoomedProject(float)=0;
    virtual void  Project(float)=0;

	virtual void  SetViewDist(float dist)=0;
	virtual float GetViewDist()=0;
	virtual void  SetUpDir(float x,float y,float z) = 0;
	virtual void  SetCameraPos(float x,float y,float z) = 0;
	virtual void  SetTarget(float x,float y,float z) = 0;
	virtual void  ReLocate(float x,float y,float z) = 0;
	
	virtual void SetViewerDir(float x,float y,float z) = 0;
	virtual void SetViewerUpDir(float x,float y,float z) =0;
	//使用摄影机
	virtual void Look() = 0;
	//俯仰角度
	virtual void Raise(float theta) = 0;
	//旋转
	virtual void Turn(float theta) = 0;
	//绕行
	virtual void Circle(float theta) = 0;
	//倾斜
	virtual void Lean(float theta) = 0;
	//向前向后运动
	virtual void Forward(float dist) = 0;
	//左右平移
	virtual void Shift(float dist) = 0;

	virtual void Up(float dist) = 0;
    virtual CAMERA_INFO* GetCameraInfo()=0;	
	virtual ZOOM_INFO  * GetZoomInfo()=0;

	 void   Zoomed(bool flag){m_is_zoom = flag;}
	 bool   IsZoomed(){return m_is_zoom;}
private:
	 bool m_is_zoom;
};
#define ZOOM_LOD_F 0.4
#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -