vector.h

来自「本程序是2005年参加中国机器人大赛的比赛程序」· C头文件 代码 · 共 54 行

H
54
字号
// Vector.h: interface for the Vector class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_VECTOR_H__7B355C3C_C360_4B91_BCBA_590F12C02F34__INCLUDED_)
#define AFX_VECTOR_H__7B355C3C_C360_4B91_BCBA_590F12C02F34__INCLUDED_

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

#include "math.h"

class Vector  
{
public:
	BOOL NearRobot();
	BOOL LineFromTwoPoint(double &,double&,double&,Vector);
	Vector(double x = 0, double y = 0) { this->x = x; this->y = y; }
	virtual ~Vector();
	double x;
	double y;  
 
	Vector operator +(const Vector &a) { return Vector(x + a.x, y + a.y); }
	Vector operator -( Vector a) { return Vector(x - a.x, y - a.y); }
//	Vector operator -(Vector a)		   { return Vector(x - a.x, y - a.y);}
	Vector operator *(const double &a) { return Vector(x * a, y * a); }
	Vector operator *(const Vector &a) { return Vector(x * a.x, y * a.y); }
	Vector operator /(const double &a) { return Vector(x / a, y / a); }
	Vector operator /(const Vector &a) { return Vector(x / a.x, y / a.y); }
	void operator =(const double &a) { x = a; y = a; }
	void operator =(const Vector &a) { x = a.x; y = a.y; }
	void operator +=(const Vector &a) { x += a.x;  y += a.y; }
	void operator +=(const double &a) { x += a;  y += a; }
	void operator -=(const Vector &a) { x -= a.x;  y -= a.y; }
	void operator -=(const double &a) { x -= a;  y -= a; }
	void operator *=(const double &a) { x *= a;  y *= a; }
	void operator /=(const double &a) { x /= a;  y /= a; }
	operator !=(const Vector &a) { return (x != a.x) || (y != a.y); } 
	operator !=(const double &a) { return (x != a) || (y != a); }
	operator ==(const Vector &a) { return (x == a.x) && (y == a.y); }
	inline double mod(){ return double(sqrt(x*x+y*y)); }
	inline double mod2() { return x*x + y*y; }//square mod
	void Normalize(){ if (mod2() != 0) (*this) /= mod(); }
	double dist(Vector& pos) { return (*this-pos).mod(); }
	double dist2(const Vector &a) { return (*this-a).mod2(); }//square dist
	BOOL Near(Vector p,double dist) { return (*this-p).mod2()<dist*dist?TRUE:FALSE; };

	double GetAngle();
	Vector Rotate(double ang);
};

#endif // !defined(AFX_VECTOR_H__7B355C3C_C360_4B91_BCBA_590F12C02F34__INCLUDED_)

⌨️ 快捷键说明

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