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

📄 vector.h

📁 蒙特卡罗方法可以有效地解决复杂的工程问题
💻 H
字号:
// Vector.h: interface for the CVector class.
//
// 说明:
//		功能:		三维向量类
//					用于描述空间点,RGB颜色值等
//		创建时间:	2004.5
//		作者:		悦鑫 0004170140
//		目的:		南京理工大学毕业设计 基于光线跟踪算法的场景绘制研究
//		参考书目:	<<VC++绘图程序设计技巧与实例>>
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_)
#define AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CVector : public CListNode  //三维向量类
{
public:

	//默认构造函数
	CVector( double x=0.0, double y=0.0, double z=0.0 ); 
	CVector( const CVector &vec);
	virtual ~CVector();

	void Rotate_X(double alpha);	//向量绕X轴旋转alpha角
	void Rotate_Y(double alpha);	//向量绕Y轴旋转alpha角
	void Rotate_Z(double alpha);	//向量绕Z轴旋转alpha角
	void Rotate(CVector rotate);	//向量分别绕向量rotate的三分量旋转
	void Translate(CVector offset);	//向量沿offset方向平移,平移长度是|offset|

	void ElemMult(const CVector &vec);//各元素叉乘
	double GetDistance(const CVector &vec);//计算this与vec之间的距离

	double GetZ();//获取分量值
	double GetY();
	double GetX();

	double SetZ(double z)	{	m_dZ = z;	}	//设置分量值
	double SetY(double y)	{	m_dY = y;	}	
	double SetX(double x)	{	m_dX = x;	}	

	void	GetOffset(double &x,double &y,double &z);//获取分量值
	void    SetOffset(double x,double y,double z);//设置分量值
	void    Empty();         //置空
    void    Reverse();		 //反转
	double	GetLength();	 //计算长度(模)
    void    Normalize();	 //归一化
	void	print();		 //输出

	//重载运算符
	CVector operator +  (const CVector &vec) const;  //重载+
	CVector operator -  (const CVector &vec) const;  //重载-
	CVector operator *  (double dnum) const;   //重载*,数乘
	CVector operator *  (const CMatrix &mat) const;   //重载*,乘矩阵
	CVector operator /  (const CVector &vec) const;  //重载/,叉乘
	double  operator *  (const CVector &vec) const;  //重载*,点乘
	void    operator += (const CVector &vec);  //重载+=  
	void    operator -= (const CVector &vec);  //重载-=
	void    operator *= (double dnum);   //重载*=,数乘
	void    operator *= (const CMatrix &mat);   //重载*=,乘矩阵
	void    operator /= (const CVector &vec);  //重载/=,叉乘 
	void    operator =  (const CVector &vec);  //重载=,赋值

private:

	double m_dX; //三分量
	double m_dY;
	double m_dZ;

	friend class CMatrix;


};

typedef CVector CRTPoint;	//三维空间中的点

#endif // !defined(AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_)

⌨️ 快捷键说明

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