00001 /*************************************************************************** 00002 * This file is part of OpenCAL: Open Computer Animation Library * 00003 * I created OpenCAL as my master's thesis Computer Science (multimedia) * 00004 * at the tUL university in Diepenbeek, Belgium * 00005 * * 00006 * Copyright (C) 2003-2004 by Jeroen Dierckx * 00007 * jeroen.dierckx@student.luc.ac.be * 00008 * * 00009 ***************************************************************************/ 00010 00011 // Includes 00012 #include "Camera.h" 00013 00014 #include <math.h> 00015 00016 using namespace OpenCAL::Utils; 00017 00018 using namespace std; 00019 00020 00021 /****************************** 00022 * Constructors and destructor * 00023 ******************************/ 00024 00025 Camera::Camera() 00026 : m_distance(0.0f), m_tiltAngle(0.0f), m_rotateAngle(0.0f), m_twistAngle(0.0f) 00027 { 00028 } 00029 00030 Camera::~Camera() 00031 { 00032 } 00033 00034 00035 /****************** 00036 * Other functions * 00037 ******************/ 00038 00039 void Camera::zoom(float distance) 00040 { 00041 m_distance -= distance; 00042 00043 if(m_distance < 0.0f) 00044 m_distance = 0.0f; 00045 } 00046 00047 /* 00048 #ifdef USE_OPENGL 00049 void Camera::applyGL() const 00050 { 00051 glTranslatef(0,0, -m_distance); 00052 glRotatef(m_tiltAngle, 1,0,0); 00053 glRotatef(m_rotateAngle, 0,1,0); 00054 glRotatef(m_twistAngle, 0,0,1); 00055 00056 glTranslatef(-m_target.getX(), -m_target.getY(), -m_target.getZ()); 00057 } 00058 00059 void Camera::unapplyGL() const 00060 { 00061 glTranslatef(m_target.getX(), m_target.getY(), m_target.getZ()); 00062 00063 glRotatef(-m_twistAngle, 0,0,1); 00064 glRotatef(-m_rotateAngle, 0,1,0); 00065 glRotatef(-m_tiltAngle, 1,0,0); 00066 glTranslatef(0,0, m_distance); 00067 } 00068 #endif // USE_OPENGL 00069 */