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

📄 vector.h

📁 曲面加工程序源码,用C++编写的加工曲线曲面的程序
💻 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 + -