area.cpp

来自「东北大学机器人足球队决策系统设计.开发环境使用 VS.NET 2003 调试 」· C++ 代码 · 共 98 行

CPP
98
字号
/****************************************************************************************************
area.cpp 艾数机器人区域源文件

Purpose:
	球场区域管理

author:
	yy_cn

Created Time:
	2006-5-11
****************************************************************************************************/

#include "area.h"

////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 区域管理
//

// public
AreaManager::AreaManager (void)
	: _areas ()
{
	//
	// 创建区域信息
	//
	/*
		1. 6.8118, 77.2392, 17.6934, 66.3961
		2. 17.6934, 77.2392, 37.2016, 66.3961
		3. 37.2016, 77.2392, 60.2706, 66.3961
		4. 60.2706, 77.2392, 82.5443, 66.3961
		5. 82.5443, 77.2392, 93.4259, 66.3961
		6. 6.8118, 66.3916, 17.6934, 43.0032
		7. 17.6934, 66.3916, 37.2016, 43.0032
		8. 37.2016, 66.3916, 60.2706, 43.0032
		9. 60.2706, 66.3916, 82.5443, 43.0032
		10. 82.5443, 66.3916, 93.4259 , 43.0032
		11. 6.8118, 43.0032, 17.6934, 19.9442
		12. 17.6934, 43.0032, 37.2016, 19.9442
		13. 37.2016, 43.0032, 60.2706, 19.9442
		14. 60.2706, 43.0032, 82.5443, 19.9442
		15. 82.5443, 43.0032, 93.4259, 19.9442
		16. 6.8118, 19.9442, 17.6934, 6.3730
		17. 17.6934, 19.9442, 37.2016, 6.3730
		18. 37.2016, 19.9442, 60.2706, 6.3730
		19. 60.2706, 19.9442, 82.5443, 6.3730
		20. 82.5443, 19.9442, 93.4259, 6.3730
	*/
	addArea (6.8118, 77.2392, 17.6934, 66.3961, BA_1);
	addArea (17.6934, 77.2392, 37.2016, 66.3961, BA_2);
	addArea (37.2016, 77.2392, 60.2706, 66.3961, BA_3);
	addArea (60.2706, 77.2392, 82.5443, 66.3961, BA_4);
	addArea (82.5443, 77.2392, 93.4259, 66.3961, BA_5);
	addArea (6.8118, 66.3916, 17.6934, 43.0032, BA_6);
	addArea (17.6934, 66.3916, 37.2016, 43.0032, BA_7);
	addArea (37.2016, 66.3916, 60.2706, 43.0032, BA_8);
	addArea (60.2706, 66.3916, 82.5443, 43.0032, BA_9);
	addArea (82.5443, 66.3916, 93.4259 , 43.0032, BA_10);
	addArea (6.8118, 43.0032, 17.6934, 19.9442, BA_11);
	addArea (17.6934, 43.0032, 37.2016, 19.9442, BA_12);
	addArea (37.2016, 43.0032, 60.2706, 19.9442, BA_13);
	addArea (60.2706, 43.0032, 82.5443, 19.9442, BA_14);
	addArea (82.5443, 43.0032, 93.4259, 19.9442, BA_15);
	addArea (6.8118, 19.9442, 17.6934, 6.3730, BA_16);
	addArea (17.6934, 19.9442, 37.2016, 6.3730, BA_17);
	addArea (37.2016, 19.9442, 60.2706, 6.3730, BA_18);
	addArea (60.2706, 19.9442, 82.5443, 6.3730, BA_19);
	addArea (82.5443, 19.9442, 93.4259, 6.3730, BA_20);
}

// public
AreaManager::~AreaManager (void)
{
	for_each (_areas.begin (), _areas.end (), delete_t <AreaInfo> ());
}

// pubic
void
AreaManager::addArea (double x1, double y1, double x2, double y2, BallArea area)
{
	AreaInfo *areaInfo = new AreaInfo (x1, y1, x2, y2, area);
	_areas.push_back (areaInfo);
}

// public	
const AreaInfo *
AreaManager::getArea (double x, double y)
{
	size_t size = _areas.size ();
	for (size_t i = 0; i < size; ++i) {
		if (_areas[i]->isInside (x, y) == true)
			return _areas[i];
	}
	return _areas[0];
}

⌨️ 快捷键说明

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