⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector.h

📁 c++builder下编的FDTD二维TM波传播情况!
💻 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<<A.xx<<"\t"<<A.yy<<"\t"<<A.zz<<endl;
	return os;
}
istream& operator>>(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));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -