www.pudn.com > 3DEDITOR.rar > CLASSLIB.H


#define VecDot(V1,V2) ((V1).x*(V2).x+(V1).y*(V2).y+(V1).z*(V2).z) 
#include  
#include  
 
class vector 
      { 
        public: 
 
          float x,y,z; 
 
          inline void  Null(void) 
                { memset(&x,0,3*sizeof(float)); }; 
          inline float Length(void) 
                { return (float)sqrt(x*x+y*y+z*z); }; 
          inline void  Vec(float x0,float y0,float z0) 
                { x=x0; y=y0; z=z0; }; 
          inline void  UnVec(float& x0,float& y0,float& z0) 
                { x0=x; y0=y; z0=z; }; 
          inline void  Negate(void) 
                { x=-x; y=-y; z=-z; }; 
          void  LinearComb (vector& v1, vector& v2, float u); 
          void  Cross(vector& V1,vector& V2); 
          int   Normalize(void); 
      }; 
 
class mat4x4 
      { 
        public: 
 
          float Mat[4][4]; 
 
          void SetCamera(vector& Vp,vector& Lp,float Twist,float d); 
          void Inverse(mat4x4& M); 
          void Rotate(float rx,float ry,float rz); 
          void Scale(float sx,float sy,float sz); 
          void Translate(float tx,float ty,float tz); 
          void LoadIdentity(void); 
          void Null(void); 
          mat4x4 operator*(mat4x4& M); 
      }; 
class camera  
      { 
        public: 
 
		char name[256]; 
		vector X,Y,Z; 
		mat4x4 mat,mat_t; 
          vector Vp,Lp,Up; 
          float theta; 
 
          camera() { 
                    theta=45;  
                    Vp.Vec(10.0,10.0,10.0); 
                    Lp.Vec(0.0,0.0,0.0); 
                    Up.Vec(0,0,1); 
                    CalcSystemVectors(); 
                   }; 
	void update_mat(); 
	void align_z(vector& z); 
        void CalcSystemVectors(void); 
		void rotate(vector& rot); 
      } ; 
 
void operator*=(vector& v,float f); 
void operator/=(vector& v1,float f); 
void operator-=(vector& v1,vector& v2); 
void operator+=(vector& v1,vector& v2); 
void operator*=(vector& v1,vector& v2); 
void operator/=(vector& v1,vector& v2); 
vector operator-(vector v1,vector& v2); 
vector operator+(vector v1,vector& v2); 
vector operator*(vector v1,vector& v2); 
vector operator/(vector v1,vector& v2); 
vector operator*(float f,vector v); 
vector operator*(vector v,float f); 
vector operator/(float f,vector v); 
vector operator/(vector v,float f); 
vector operator*(vector& V,mat4x4& M); 
vector operator*(mat4x4& M,vector& V); 
int operator==(vector& v1,vector& v2); 
int operator>=(vector& v1,vector &v2); 
int operator<=(vector& v1,vector &v2);