www.pudn.com > 3d_terrain.rar > Vector3d.h, change:1998-12-24,size:2132b


//******************************************** 
// Vector3d.h 
//******************************************** 
// pierre.alliez@cnet.francetelecom.fr 
// Created : 10/12/97 
// Modified : 19/01/98 
//******************************************** 
 
#ifndef _VECTOR_3D_ 
#define _VECTOR_3D_ 
 
#include "Object3d.h" 
 
class CVertex3d; 
 
class CVector3d : public CObject3d 
{ 
 
private : 
 
	// Geometry 
	float m_x; 
	float m_y; 
	float m_z; 
 
public : 
 
	CVector3d() { m_x = m_y = m_z = 0.0f; }  
	virtual ~CVector3d(); 
	 
	// Constructors 
	CVector3d(const float x,const float y,const float z); 
	CVector3d(CVector3d &vector); 
	CVector3d(CVector3d *pVector); 
	CVector3d(CVertex3d *pVertex1,CVertex3d *pVertex2); 
	CVector3d(CVertex3d &vertex1,CVertex3d &vertex2); 
 
	// Debug 
	void Trace(); 
 
	// Data setting 
	virtual int GetType(); 
	void Clear(void); 
	void Set(CVector3d *pVector); 
	void Set(CVector3d &vector); 
	void Set(CVertex3d *pVertex1,CVertex3d *pVertex2); 
	void Set(const float x,const float y,const float z); 
	void Copy(CVector3d &vector); 
	void Copy(CVector3d *pVector); 
 
	// Per coordinate (explicit inline functions) 
	void x(float x) {	m_x = x; } 
	void y(float y) {	m_y = y; } 
	void z(float z) {	m_z = z; }  
 
	// Data access (explicit inline functions) 
	float x(void) { return m_x; } 
	float y(void) { return m_y; } 
	float z(void) { return m_z; } 
 
	// Operators 
	CVector3d operator=(CVector3d& vector); // Setting 
	void operator+=(CVector3d* pVector); 
	void operator/=(float factor); 
	void operator*=(float factor); 
 
	void Inner(CVector3d& vector); 
	static CVector3d Inner(CVector3d* u,CVector3d* v); // Stupid c++ 
 
	// Misc 
	void NormalizeL2(void); 
	void NormalizeL2(float value); 
	double GetNormL2(void); 
	double GetNormL2Square(void); 
	int Collinear(CVector3d *pVector); 
	int Collinear(CVector3d &vector); 
 
	void RotateXZ(float alpha); 
 
}; 
 
// External operators 
CVector3d operator+(CVector3d& u,CVector3d& v); // Add 
CVector3d operator-(CVector3d& u,CVector3d& v); // Subtract 
CVector3d operator^(CVector3d& u,CVector3d& v); // Inner 
 
#endif // _VECTOR_3D_