📄 vector.h
字号:
#if !defined(__vector_h) //斣暫
#define __vector_h
// Definition of vector class
#include <math.h>
class vector {
private:
double x,y,z; // coordinate
public:
// constructor and destructor
vector() { x = y = z = 0.0; };
vector( double xx, double yy, double zz) { x = xx; y = yy; z=zz; };
~vector(){};
// operator
friend int operator == (const vector& a, const vector& b){
if( (a.x == b.x) && (a.y == b.y) && (a.z == b.z) )return(1);
else return(0);
}
friend vector operator + (const vector& a, const vector& b){
return( vector(a.x+b.x, a.y+b.y, a.z+b.z ));
}
friend vector operator - (const vector& a, const vector& b){
return( vector(a.x-b.x, a.y-b.y, a.z-b.z ));
}
friend vector operator - (const vector& a) {
return( vector( -a.x, -a.y, -a.z));
}
// 撪愊丗the inner(scalar) product
friend double operator * (const vector& a, const vector& b){
return( a.x*b.x + a.y*b.y + a.z*b.z );
}
// 奜愊丗the vector product
friend vector operator % (const vector& a, const vector& b) {
return( vector( a.y*b.z - a.z*b.y ,
a.z*b.x - a.x*b.z ,
a.x*b.y - a.y*b.x ));
}
friend vector operator / (const vector& a, double k){
return(vector(a.x/k, a.y/k, a.z/k ));
}
friend vector operator * (const vector& a, double k){
return(vector(a.x*k, a.y*k, a.z*k ));
}
friend vector operator * (double k, const vector& a){
return(vector(a.x*k, a.y*k, a.z*k ));
}
//accessor
void setX(double xx){ x=xx; };
void setY(double yy){ y=yy; };
void setZ(double zz){ z=zz; };
double getX(void){ return(x);};
double getY(void){ return(y);};
double getZ(void){ return(z);};
//Length of vector
double length(){
return( sqrt( (*this)*(*this) ));
}
//Distance between 2 points
friend double distance2( const vector& a, const vector& b){
vector c = a-b;
return( c.length() );
}
//Nomalization of vector
vector normalize(){
double len = (*this).length();
if (len < 1.0e-9){
return(*this);
}
else{
return( (*this)/len );
};
}
}; // end of vector class
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -