
Camera.h
By: a guest on
Jan 21st, 2011 | syntax:
C++ | size: 1.96 KB | views:
39 | expires: Never
#ifndef CAMERA_H
#define CAMERA_H
#include "../defines.h"
class Camera
{
public:
Camera()
{
x = y = z = x_a = y_a = z_a = 0;
}
virtual ~Camera() {}
void Look()
{
glRotatef(x_a,0,1,0);
glRotatef(y_a,1,0,0);
glRotatef(z_a,0,0,1);
glTranslatef(x,y,z);
}
void MoveTo(float x_m, float y_m, float z_m)
{
std::cout<<"MoveTo\n";
x = -x_m;
y = -y_m;
z = -z_m;
}
void MoveBy(float x_m, float y_m, float z_m)
{
x -= x_m;
y -= y_m;
z -= z_m;
}
void RotateTo(float x_m,float y_m,float z_m)
{
x_a = -x_m;
y_a = -y_m;
z_a = -z_m;
}
void RotateBy(float x_m, float y_m, float z_m)
{
x_a -= x_m;
y_a -= y_m;
z_a -= z_m;
}
void MoveFoward(float dist)
{
//x_a = fmod(x_a,360.0f);
//y_a = fmod(y_a,360.0f);
//z_a = fmod(z_a,360.0f);
float xx = 0;
float yy = 0;
float zz = dist;
float xxa, yya, zza;
xxa = (xx*(cos(y_a)*cos(x_a)))+(yy*(-sin(x_a)*cos(y_a)))+(zz*sin(y_a));
yya = (xx*((sin(x_a)*cos(z_a))+(sin(z_a)*sin(y_a)*cos(x_a))))+(yy*((cos(x_a)*cos(z_a))-(sin(z_a)*sin(y_a)*sin(x_a))))+(zz*(-sin(z_a)*cos(y_a)));
zza = (xx*((sin(x_a)*sin(z_a))-(sin(y_a)*cos(z_a)*cos(x_a))))+(yy*((sin(x_a)*sin(y_a)*cos(z_a))+(cos(x_a)*sin(z_a))))+(zz*(cos(z_a)*cos(y_a)));
printf("XVal: %f YVal: %f ZVal: %f --- ",xxa,yya,zza);
printf("xA: %f, yA: %f, zA: %f\n",x_a,y_a,z_a);
//SECOND X
//FIRST Z
//FIRST Y
x+=xxa;
y+=yya;
z+=zza;
}
float x,y,z;
float x_a,y_a,z_a;
protected:
private:
};
#endif // CAMERA_H