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);