00001 00018 #ifndef _VUPARALLELCAMERA_H_ 00019 #define _VUPARALLELCAMERA_H_ 00020 00021 #include "../vuLinAlg/vuVector.h" 00022 #include "vuCamera.h" 00023 00024 #include "../vuMisc/vuRay.h" 00025 00030 class vuParallelCamera : public vuCamera 00031 00032 { 00033 public: 00034 vuCameraType getType(void) {return vuPARALLEL_CAMERA; }; 00035 00036 public: 00038 vuParallelCamera(); 00042 vuParallelCamera(const vuParallelCamera& c); 00043 virtual ~vuParallelCamera(); 00044 00045 float getXRange(void); 00046 void setXRange(float xrng); 00047 00048 float getYRange(void); 00049 void setYRange(float yrng); 00050 00051 void setNear (float near); 00054 float getNear (); 00057 void setFar (float far); 00060 float getFar (); 00063 00064 00067 void init(void); 00068 00070 void glInit(); 00071 00073 vuRay getRay(float xpixel, float ypixel); 00074 00076 float getDistance(const vuVector& point) const; 00077 00081 vuVector& project(vuVector& point) const; 00082 00083 00086 virtual void TakeSnapShot (char* Shot); 00088 virtual void TakeSnapShot (); 00090 void TakeSnapShotOrtho (char* Shot); 00092 virtual int RestoreShot (char* Shot); 00094 int RestoreShotOrtho (char* Shot); 00098 virtual int RestoreNextShot (); 00102 virtual int RestorePreviousShot (); 00103 00105 virtual char* get_id (); 00107 virtual bool verify_id (char* id); 00108 00110 virtual vuParallelCamera& operator=(const vuParallelCamera& rhs); 00111 00113 friend ostream& operator<<(ostream& out, vuParallelCamera &cam); 00115 friend istream& operator>>(istream& in, vuParallelCamera &cam); 00116 00119 virtual vuCamera* create_new (); 00120 00121 00122 virtual vuCamera* set_equal_to_interp (vuCamera* cam1, vuCamera* cam2, float t1, float t2); 00123 00129 virtual vuCamera* operator* (float t); 00130 00135 virtual vuCamera* operator*= (float t); 00136 00142 virtual vuCamera* operator+ (vuParallelCamera &rhs); 00143 00148 virtual vuCamera* operator+= (vuParallelCamera &rhs); 00149 00155 virtual vuCamera* operator+ (vuParallelCamera *rhs); 00156 00161 virtual vuCamera* operator+= (vuParallelCamera *rhs); 00162 00167 virtual vuParallelCamera* operator= (vuParallelCamera *rhs); 00168 00173 friend vuCamera* operator*(float t, vuParallelCamera &cam); 00174 00175 protected: 00176 //float m_CullBox[6]; left, right, bottom, top, near, far - clipping box 00177 00178 float m_XRange; 00179 float m_YRange; 00180 float m_XScale, m_YScale; 00181 float m_Near; 00182 float m_Far; 00183 00184 vuVector m_XStep; 00185 vuVector m_YStep; 00186 }; 00187 00188 #endif 00189 00190