www.pudn.com > 2D-TM.rar > vector.h


 
typedef  double db; 
class vector{ 
private: 
public: 
	db xx,yy,zz; 
	vector(db x=0.0,db y=0.0,db z=0.0); 
	double operator!();			//calculate the module of a vector 
	vector operator&();			//unit vector 
	vector operator~();			//calculate the directive cosine of a vector 
 
	friend ostream& operator<<(ostream& os,vector& A); 
	friend istream& operator>>(istream& is,vector& A); 
	friend bool operator==(vector& A,vector& B); 
	friend double operator*(vector& A,vector& B);		//dot multiplication 
	friend vector operator*(db k,vector& B); 
	friend vector operator*(vector& B,db k); 
	friend vector operator/(vector& A,vector& B);		//cross multiplication 
	friend vector operator+(vector& A,vector& B);		//additive operator 
	friend vector operator-(vector& A,vector& B); 
	friend double angle(vector& A,vector& B); 
	//friend vector operator(vector A,db k); 
}; 
 
vector::vector(db x,db y,db z){ 
	xx=x;yy=y;zz=z; 
} 
double vector::operator!(){ 
	return sqrt(xx*xx+yy*yy+zz*zz); 
} 
vector vector::operator~(){ 
	double temp=sqrt(xx*xx+yy*yy+zz*zz); 
	return vector(xx/temp,yy/temp,zz/temp); 
} 
vector vector::operator&(){ 
	double temp=sqrt(xx*xx+yy*yy+zz*zz); 
	return vector(xx/temp,yy/temp,zz/temp); 
} 
bool operator==(vector& A,vector& B){ 
	return ((A.xx==B.xx)&&(A.yy==B.yy)&&(A.zz==B.zz))?true:false; 
} 
ostream& operator<<(ostream& os,vector& A){ 
	os<>(istream& is,vector& A){ 
	is>>A.xx>>A.yy>>A.zz; 
	return is; 
} 
double operator*(vector& A,vector& B){ 
	return A.xx*B.xx+A.yy*B.yy+A.zz*B.zz; 
} 
vector operator/(vector& A,vector& B){ 
	return vector(A.yy*B.zz-A.zz*B.yy,A.zz*B.xx-A.xx*B.zz,A.xx*B.yy-A.yy*B.xx); 
} 
vector operator*(db k,vector& B){ 
	return vector(k*B.xx,k*B.yy,k*B.zz); 
} 
vector operator*(vector& B,db k){ 
	return vector(k*B.xx,k*B.yy,k*B.zz); 
} 
 
vector operator+(vector& A,vector& B){ 
	return vector(A.xx+B.xx,A.yy+B.yy,A.zz+B.zz); 
} 
vector operator-(vector& A,vector& B){ 
	return vector(A.xx-B.xx,A.yy-B.yy,A.zz-B.zz); 
} 
double angle(vector& A,vector& B){ 
	return acos((A*B)/(!A*!B)); 
}