www.pudn.com > QuadTreeLOD4cs.rar > Vector.h, change:2003-06-12,size:1643b


#if !defined(AFX_CVECTOR3_H__A7C41EA3_DB80_49DA_9A84_72E6251F9A21__INCLUDED_) 
#define AFX_CVECTOR3_H__A7C41EA3_DB80_49DA_9A84_72E6251F9A21__INCLUDED_ 
#include <math.h> 
struct CVector3 
{ 
	float x,y,z; 
	float ComputeLength(void) 
	{ 
		return  (float)sqrt(x*x + y*y + z*z); 
	}; 
	CVector3 operator+ (const CVector3 &v) 
	{ 
		return CVector3(v.x + x, v.y + y, v.z + z);		 
	}; 
	CVector3  operator- (const CVector3 &v) 
	{ 
		return CVector3(x - v.x, y - v.y, z - v.z); 
	}; 
	CVector3  operator* (const float scalar) 
	{ 
		return CVector3(x * scalar,y * scalar,z * scalar); 
	}; 
	CVector3  operator* (const CVector3 &v) 
	{	 
		return CVector3(x * v.x,y * v.y,z * v.z); 
	}; 
	CVector3  operator/ (const CVector3 &v) 
	{ 
		return CVector3(x/v.x,y/v.y,z/v.z); 
	}; 
	CVector3  operator/ (const float scalar) 
	{		 
		return CVector3(x / scalar,y / scalar,z / scalar); 
	}; 
	CVector3  &operator = (const CVector3 &v) 
	{		 
		x = v.x;y = v.y;z = v.z; 
		return *this;  
	}; 
	CVector3() 
	{	 
		x = 0;y = 0; z = 0;	 
	} 
	CVector3(float x, float y, float z) 
	{ 
		this->x = x;this->y = y;this->z = z; 
	}; 
	 
}; 
 
void ComputeNormal(CVector3* v1, CVector3* v2, CVector3* v3); 
 
float DotProduct(const CVector3 &v1, const CVector3 &v2); 
 
CVector3 CrossProduct(const CVector3 &v1, const CVector3 &v2); 
 
 
float Magnitude(CVector3 vNormal); 
 
CVector3 Normalize(CVector3 vVector); 
 
bool PntFrontOrBack(const CVector3 &vPnt,const CVector3 &vPtStart,const CVector3 &vDrct); 
 
bool PntFrontOrBack2(const CVector3 &vPnt,const CVector3 &vPtStart,const CVector3 &vDrct); 
 
float Dist(const CVector3 &v1,const CVector3 &v2); 
#endif