📄 glcamera.cpp
字号:
/*
glcamera.cpp - Camera class
Copyright (c) HalfLucifer, 2001.11.18
*/
#include "glcamera.h"
GLcamera::GLcamera(GLvector pos, GLvector view, GLvector up)
: m_Position(pos), m_ViewPoint(view), m_UpVector(up)
{
gluLookAt( m_Position[0], m_Position[1], m_Position[2],
m_ViewPoint[0], m_ViewPoint[1], m_ViewPoint[2],
m_UpVector[0], m_UpVector[1], m_UpVector[2] );
}
void GLcamera::Update()
{
gluLookAt( m_Position[0], m_Position[1], m_Position[2],
m_ViewPoint[0], m_ViewPoint[1], m_ViewPoint[2],
m_UpVector[0], m_UpVector[1], m_UpVector[2] );
}
void GLcamera::Move(float vec)
{
GLvector delta(m_ViewPoint[0]-m_Position[0], 0, m_ViewPoint[2]-m_Position[2]);
m_Position += delta * vec;
m_ViewPoint += delta * vec;
}
void GLcamera::Strafe(float vec)
{
GLvector delta;
delta.CrossProduct(m_UpVector, (m_ViewPoint-m_Position));
m_Position += delta * vec;
m_ViewPoint += delta * vec;
}
void GLcamera::ViewMove()
{
POINT mouse;
int midx = 800 >> 1; // Screen width
int midy = 600 >> 1; // Screen height
float DeltaY = 0.0f;
float RotateY = 0.0f;
GetCursorPos(&mouse);
if ((mouse.x==midx) && (mouse.y==midy))
return;
SetCursorPos(midx, midy);
RotateY = (float)(midx-mouse.x)/XMOUSE_SENSITIVE;
DeltaY = (float)(midy-mouse.y)/YMOUSE_SENSITIVE;
m_ViewPoint[1] += DeltaY;
RotateView(0, -RotateY, 0);
}
void GLcamera::RotateView(float x, float y, float z)
{
GLvector v = m_ViewPoint - m_Position;
if (x)
{
m_ViewPoint[1] = (float)(m_Position[1] + cos(x)*v[1] - sin(x)*v[2]);
m_ViewPoint[2] = (float)(m_Position[2] + sin(x)*v[1] + cos(x)*v[2]);
}
if (y)
{
m_ViewPoint[0] = (float)(m_Position[0] + cos(y)*v[0] - sin(y)*v[2]);
m_ViewPoint[2] = (float)(m_Position[2] + sin(y)*v[0] + cos(y)*v[2]);
}
if (z)
{
m_ViewPoint[0] = (float)(m_Position[0] + sin(z)*v[1] + cos(z)*v[0]);
m_ViewPoint[1] = (float)(m_Position[1] + cos(z)*v[1] - sin(z)*v[0]);
}
}
GLvector GLcamera::GetRightVector()
{
GLvector v;
v.CrossProduct((m_ViewPoint-m_Position), m_UpVector);
v.Normalize();
return v;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -