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

📄 camera.cc

📁 计算机图形学~想必是很多人需要的~在此共享一下
💻 CC
字号:
//Camera.cc#include "Camera.h"Camera::Camera(Enum CType){  int i;    Type=CType;  KeepMatrix=true;  for(i=0; i<3; i++)    {      if(i<2)	Changed[i]=false;      Position[i]=0.0;      AimAt[i]=0.0;      UpDirection[i]=0.0;    }  UpDirection[1]=1.0;  AimAt[2]=-100.0;  }voidCamera::SetValuev(Enum PName, float *v){  float *temp=NULL;  int i;  switch(PName)    {    case POSITION:      Changed[0]=true;      temp=Position;      break;    case AIMAT:      Changed[0]=true;      temp=AimAt;      break;    case UPDIRECTION:      Changed[0]=true;      temp=UpDirection;      break;    default:      break;    }  for(i=0; i<3; i++)    temp[i]=v[i];}voidCamera::SetValue(Enum PName, float v1, float v2, float v3){  float temp[]={v1, v2, v3};    SetValuev(PName, temp);}voidCamera::SetValue(Enum PName, float v){  switch(PName)    {    case ASPECT:      Changed[1]=true;      Aspect=v;      break;    case NEAR:      Changed[1]=true;      Near=v;      break;    case FAR:      Changed[1]=true;      Far=v;      break;    case HEIGHT:      if(Type==ORTHO)	{	  Changed[1]=true;	  Height=v;	}      break;    case YANGLE:      if(Type==PERSPECTIVE)	{	  Changed[1]=true;	  YAngle=v;	}      break;    default:      break;    }}void Camera::Render(){  float x2=Height*Aspect/2;  float x1=(-1)*x2;  float y2=Height/2;  float y1=(-1)*y2;  if(Changed[1])    {      glMatrixMode(GL_PROJECTION);      glLoadIdentity();      if(Type==ORTHO)	glOrtho(x1, x2, y1, y2, Near, Far);      else	gluPerspective(YAngle, Aspect, Near, Far);      glMatrixMode(GL_MODELVIEW);    }  if(Changed[0])    {      glLoadIdentity();      gluLookAt(Position[0], Position[1], Position[2], AimAt[0],		AimAt[1], AimAt[2], UpDirection[0], UpDirection[1],		UpDirection[2]);    }}

⌨️ 快捷键说明

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