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

📄 general.h

📁 武汉工程大学曾经参加过仿真机器人世界杯的源程序
💻 H
字号:
/**************************************************************************** 文件名称:General.h
* 摘    要:该文件声明一些常量、球以及机器人场地的类型。
* 
* 当前版本:2.0
* 作    者:Moon, Dr Jun Jo, 李迅
* 完成日期:2005年10月24日
***************************************************************************/
#ifndef __GENERAL_H__
#define __GENERAL_H__

//	-------------------------------全局参数----------------------------------------
const long		PLAYERS_PER_SIDE = 5;	//	每队球员个数

const double	CM				= 2.54;	//	英寸——厘米转换参数(1英寸 = 2.54厘米)
const double	PI				= 3.14159265;

// 比赛状态常量
const long		NORMAL			= 0;		//	一般踢球动作
const long		FREE_BALL		= 1;		//	自由球
const long		PLACE_KICK		= 2;		//	开球
const long		PENALTY_KICK	= 3;		//	点球
const long		FREE_KICK		= 4;		//	任意球
const long		GOAL_KICK		= 5;		//	球门球

// 发球方
const long		ANYONES_BALL	= 0;		//	没有发球方
const long		BLUE_BALL		= 1;		//	蓝队发球
const long		YELLOW_BALL		= 2;		//	黄对罚球

// 球队
const long		BLUE_TEAM		= 0;
const long		YELLOW_TEAM		= 1;

// 场地信息
const double	FLEFTX			= 6.8118	* CM;	//	场地左边界
const double	FTOP			= 77.2392	* CM;	//	场地上边界
const double	FRIGHTX			= 93.4259	* CM;	//	场地右边界
const double	FBOT			= 6.3730	* CM;	//	场地下边界

const double	GLEFT			= 2.8748	* CM;	//	球门左边界
const double	GTOPY			= 49.6801	* CM;	//	球门上边界
const double	GRIGHT			= 97.3632	* CM;	//	球门右边界
const double	GBOTY			= 33.9320	* CM;	//	球门下边界


//	-------------------------------基本类型----------------------------------------
//	球类型
class Ball 
{
public:
	double x;
	double y;
};

//	己方机器人类型
class HRobot
{
public:
	double x;
	double y;
	double angle;

	double pwm1;		//	左轮速
	double pwm2;		//	右轮速
};

//	对方机器人类型
class ORobot
{
public:
	double x;
	double y;
	double angle;
};

//	场地类型
class Field
{
public:
	//	构造函数,初始化场地各点坐标
	Field():left(FLEFTX), top(FTOP), right(FRIGHTX), bottom(FBOT), gtop(GTOPY), gbot(GBOTY){}

	double left;	//	场地左边界
	double top;		//	场地上边界
	double right;	//	场地右边界
	double bottom;	//	场地下边界
	double gtop;	//	球门上边界
	double gbot;	//	球门下边界
};

//	球的坐标转换
inline void TransformCoordinate(Ball &ball, const Field &fd)
{
	ball.x = fd.left + fd.right - ball.x;
	ball.y = fd.bottom + fd.top - ball.y;
}

//	己方机器人的坐标转换
inline void TransformCoordinate(HRobot &robot, const Field &fd)
{
	robot.x = fd.left + fd.right - robot.x;
	robot.y = fd.bottom + fd.top - robot.y;

	if(robot.angle > 0)	robot.angle -= 180;
	else				robot.angle += 180;
}

//	对方机器人的坐标转换
inline void TransformCoordinate(ORobot &robot, const Field &fd)
{
	robot.x = fd.left + fd.right - robot.x;
	robot.y = fd.bottom + fd.top - robot.y;

	if(robot.angle > 0)	robot.angle -= 180;
	else				robot.angle += 180;
}

#endif	//	__GENERAL_H__

⌨️ 快捷键说明

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