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

📄 vector3f.h

📁 基于Opencv的人体运动检测系统
💻 H
字号:
/***************************************************************************                          vector3f.h  -  description                             -------------------    begin                : Thu Apr 10 2003    copyright            : (C) 2003 by junglesong    email                : junglesong@etang.com ***************************************************************************/#ifndef VECTOR3F_H#define VECTOR3F_H//基本三维空间"向量/点"类class Vector3f {public: 	//无参构造函数	Vector3f()	{		x=y=z=0;	};	//有参构造函数	Vector3f(const float inx,const float iny,const float inz)	{		//分别将参数赋值给三个成员变量		x=inx;		y=iny;		z=inz;		};	//析构函数	~Vector3f(){};		//重载=操作符,实现两向量变量的赋值	Vector3f& operator=(Vector3f& inVet)	{		x=inVet.x;		y=inVet.y;		z=inVet.z;		return *this;	};	//重载+操作符,实现两向量变量的相加	Vector3f operator+(Vector3f vVector)	{		//返回相加的结果		return Vector3f(vVector.x + x, vVector.y + y, vVector.z + z);	}	//重载-操作符,实现两向量变量的相减	Vector3f operator-(Vector3f vVector)	{		//返回相减的结果		return Vector3f(x - vVector.x, y - vVector.y, z - vVector.z);	}	//重载*操作符,实现一个向量变量和一个浮点数的乘法	Vector3f operator*(float num)	{		//返回缩放了的向量		return Vector3f(x * num, y * num, z * num);	}	//重载/操作符,实现一个向量变量和一个浮点数的除法	Vector3f operator/(float num)	{		//返回缩放了的向量		return Vector3f(x / num, y / num, z / num);	}		//向量绕x轴旋转,参数sintheta为旋转角度的正弦值,参数costheta为旋转角度的余弦值	void RotateX(float sintheta,float costheta)	{		float sin_beta,cos_bata;		sin_beta=z*costheta +y*sintheta;		cos_bata=y* costheta- z*sintheta;		z=sin_beta;		y=cos_bata;	};	//向量绕y轴旋转,参数sintheta为旋转角度的正弦值,参数costheta为旋转角度的余弦值	void RotateY(float sintheta,float costheta)	{		float sin_beta,cos_bata;		sin_beta=z*costheta +x*sintheta;		cos_bata=x* costheta- z*sintheta;		z=sin_beta;		x=cos_bata;	};    //向量绕z轴旋转,参数sintheta为旋转角度的正弦值,参数costheta为旋转角度的余弦值	void RotateZ(float sintheta,float costheta)	{		float sin_beta,cos_bata;		sin_beta=y*costheta +x*sintheta;		cos_bata=x* costheta- y*sintheta;		y=sin_beta;		x=cos_bata;	};		//缩放一个向量,参数scale为缩放的比例	void Zoom(float scale)	{		x*=scale;		y*=scale;		z*=scale;	};		//平移一个向量	void Move(Vector3f inVect)	{		x+=inVect.x;		y+=inVect.y;		z+=inVect.z;	};public:		float x;//成员变量x,向量在x轴上的分量	float y;//成员变量y,向量在y轴上的分量	float z;//成员变量z,向量在z轴上的分量};//得到两向量的叉乘Vector3f Cross(Vector3f vVector1, Vector3f vVector2);//得到一个向量的绝对长度float Magnitude(Vector3f vNormal);//将一个向量单位化Vector3f Normalize(Vector3f vNormal);//得到一个三点决定的平面的垂直向量(经过单位化)Vector3f Normal(Vector3f vPolygon[]);//得到空间中两点的距离float Distance(Vector3f vPoint1, Vector3f vPoint2);//得到两向量的点积float Dot(Vector3f vVector1, Vector3f vVector2);//得到两向量的夹角double AngleBetweenVectors(Vector3f Vector1, Vector3f Vector2);#endif

⌨️ 快捷键说明

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