亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? headdecision.cpp

?? 2006年世界杯足球賽2D仿真組第16名的源代碼。在此代碼上隨便改改
?? CPP
字號(hào):
/* *  Copyright 2002-2005, Mersad Team, Allameh Helli High School (NODET). * *  This program is free software, you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *  GNU Library General Public License for more details. * *  This file is created by: Ahmad Boorghany * *  Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. *  For more information please read README file.*/#include <cmath>#include <cassert>#include <Basics.h>#include <Degree.h>#include <Logger.h>#include <Command.h>#include <HeadDecision.h>#include <AdvancedAgent.h>using namespace std;using namespace Degree;using namespace Basics;// HeadDecisionForm's functionsvoid HeadDecisionForm::reset(){	tnMode = TNM_LOOK_NORMALLY;}// HeadDecision's functionsHeadDecision::HeadDecision(const AdvancedAgent *owner):		owner(owner){	for (unsigned i = 0; i < VIEW_PARTS_NUM; i++)		viewPartObjectsNums[i] = 0;	turnNeckCommand = NULL;	changeViewCommand = NULL;	worldModel = &owner->getWorldModel();}HeadDecision::~HeadDecision(){}Command *HeadDecision::getTurnNeckCommand(){	return turnNeckCommand;}Command *HeadDecision::getChangeViewCommand(){	return changeViewCommand;}void HeadDecision::decide(const Command *bodyCycleCommand,		const HeadDecisionForm &headForm){	float nextViewAngle = 0;	ViewModeWidth nextWidth = VMW_NARROW;	TurnNeckMode tnMode = headForm.tnMode;	LOG << "HeadDecision::decide" << endl;	LOG << "TurnNeckMode: " << headForm.tnMode << endl;	nextBody = worldModel->getBody();	nextBody.simulateByAction(bodyCycleCommand);	nextBody.simulateByDynamics();	nextBall = worldModel->getBall();	nextBall.simulateByAction(worldModel->getBody(), bodyCycleCommand);	nextBall.simulateByDynamics(nextBody, 1,			worldModel->getBallStatus(), worldModel->getCurTime());	if (tnMode == TNM_AUTO_PLAY_ON)	{		if (worldModel->getBall().getAbsVec().getMagnitude() > 7.5)			tnMode = TNM_LOOK_NORMALLY;		else			tnMode = TNM_LOOK_CAREFULLY;	}	if (nextBall.getAbsVec().getMagnitude() <			worldModel->getBody().getVisibleDistance())	{		if (tnMode == TNM_LOOK_CAREFULLY_TO_BALL ||			tnMode == TNM_LOOK_NORMALLY_TO_BALL)			tnMode = TNM_LOOK_CAREFULLY;	}	assert(tnMode != TNM_NONE);	TurnNeckMode lastMode = TNM_NONE;	while (lastMode != tnMode)	{		lastMode = tnMode;		switch (tnMode)		{			case TNM_LOOK_NORMALLY:				nextWidth = owner->getSyncedNormal();				nextViewAngle = worldModel->getBody().viewWidthToViewAngle(nextWidth);				setWeightsForLookNormally();				break;			case TNM_LOOK_CAREFULLY:				nextWidth = owner->getSyncedNarrow();				nextViewAngle = worldModel->getBody().viewWidthToViewAngle(nextWidth);				setWeightsForLookCarefully();				break;			case TNM_LOOK_CAREFULLY_TO_BALL:				nextWidth = owner->getSyncedNarrow();				nextViewAngle = worldModel->getBody().viewWidthToViewAngle(nextWidth);				decideForLookCarefullyToBall();				break;			case TNM_LOOK_NORMALLY_TO_BALL:				nextWidth = owner->getSyncedNormal();				nextViewAngle = worldModel->getBody().viewWidthToViewAngle(nextWidth);				decideForLookNormallyToBall(nextViewAngle, tnMode);				break;			case TNM_LOOK_CAREFULLY_TO_OPP_GOALIE:				nextWidth = owner->getSyncedNarrow();				nextViewAngle = worldModel->getBody().viewWidthToViewAngle(nextWidth);				decideForLookCarefullyToOppGoalie(tnMode);				break;			default:				assert(0);		}	}	changeViewCommand = new ChangeViewCommand(AT_HEAD_DECISION, VMQ_HIGH, nextWidth);	if (tnMode == TNM_LOOK_NORMALLY ||		tnMode == TNM_LOOK_CAREFULLY)		decideForTurnNeckCommand(nextViewAngle);	logVariables();}void HeadDecision::decideForLookCarefullyToBall(){	LOG << "HeadDecision::decideForLookCarefullyToBall" << endl;	float dir = normalizeAngle(nextBall.getHeadVec().getDirection());	turnNeckCommand = new TurnNeckCommand(AT_HEAD_DECISION, dir);}void HeadDecision::decideForLookCarefullyToOppGoalie(TurnNeckMode &tnMode){	LOG << "HeadDecision::decideForLookCarefullyToOppGoalie" << endl;	float dir;	Player nextOppGoalie;	if (worldModel->getOppGoalie())	{		nextOppGoalie = *worldModel->getOppGoalie();		nextOppGoalie.simulateByDynamics(nextBody);		dir = nextOppGoalie.getHeadVec().getDirection();	}	else	{		tnMode = TNM_LOOK_CAREFULLY;		return;	}	dir = normalizeAngle(dir);	turnNeckCommand = new TurnNeckCommand(AT_HEAD_DECISION, dir);}void HeadDecision::decideForLookNormallyToBall(float nextViewAngle, TurnNeckMode &tnMode){	LOG << "HeadDecision::decideForLookNormallyToBall" << endl;	float dir;	if (worldModel->getBall().isValid())	{		float headDirRight = nextBall.			getAbsVec().getDirection() + (nextViewAngle - 15);		float headDirLeft = nextBall.			getAbsVec().getDirection() - (nextViewAngle - 15);		if (abs(Degree::getDeltaAngle(nextBody.getBodyDir(), headDirLeft)) < 90 ||			abs(Degree::getDeltaAngle(nextBody.getBodyDir(), headDirRight)) < 90)		{			if (worldModel->getSeeDeltaCycle(headDirRight, 0.2) >				worldModel->getSeeDeltaCycle(headDirLeft, 0.2))				dir = headDirRight;			else				dir = headDirLeft;		}		else		{			tnMode = TNM_LOOK_NORMALLY;			return;		}		dir = Degree::getDeltaAngle(dir, nextBody.getBodyDir());		dir = Degree::getDeltaAngle(dir, nextBody.getRelativeHeadDir());	}	else		dir = -nextBody.getRelativeHeadDir();	dir = normalizeAngle(dir);	turnNeckCommand = new TurnNeckCommand(AT_HEAD_DECISION, dir);}void HeadDecision::decideForTurnNeckCommand(float nextViewAngle){//	LOG << "HeadDecision::decideForTurnNeckCommand" << endl;	float bodyHeadDir;	float turnNeckAngle;	float turnNeckWeights[(int)(180.0 / TURN_NECK_RESOLUTION) + 1];	unsigned i, j;	updateViewPartObjectsNum();	for (i = 0; i < VIEW_PARTS_NUM; i++)		viewPartWeights[i] = getViewPartWeight(i);//LOG << "NextCycleViewAngle:" << nextViewAngle << endl;	for (i = 0; i <= 180.0 / TURN_NECK_RESOLUTION; i++)	{//LOG << "i:" << i << endl;		turnNeckWeights[i] = 0;		bodyHeadDir = nextBody.getBodyDir() - 90 + i * TURN_NECK_RESOLUTION;//LOG << "BodyHeadDir:" << bodyHeadDir << endl;		for (j = 0; j < VIEW_PARTS_NUM; j++)		{			if (worldModel->getSeeViewPartValue(j, bodyHeadDir, nextViewAngle) >= 0.75)			{//LOG << "j:" << j << endl;//LOG << "ViewPartWeight[j]:" << viewPartWeights[j] << endl;				turnNeckWeights[i] += viewPartWeights[j] * viewPartWeights[j];			}		}//LOG << "TurnNeckWeight[i]:" << turnNeckWeights[i] << endl;	}	unsigned turnNeckWeightFlag = 0;	for (i = 1; i < (unsigned)(180.0 / TURN_NECK_RESOLUTION) + 1; i++)	{//LOG << "TurnNeckWeight[" << i << "]:" << turnNeckWeights[i] << endl;		if (turnNeckWeights[i] > turnNeckWeights[turnNeckWeightFlag])			turnNeckWeightFlag = i;	}//LOG << "TurnNecWeightFlag:" << turnNeckWeightFlag << endl;	turnNeckAngle = (float)turnNeckWeightFlag * TURN_NECK_RESOLUTION - 90.00;//LOG << "TurnNeckAngle:" << turnNeckAngle << endl;	turnNeckCommand = new TurnNeckCommand(AT_HEAD_DECISION, turnNeckAngle -			worldModel->getBody().getRelativeHeadDir());//LOG << "TurnNeckCommand.Command:" << turnNeckCommand->toString() << endl;}void HeadDecision::logVariables(){	LOG << "HeadDecision View Parts:" << endl;		for (unsigned i = 0; i < VIEW_PARTS_NUM; i++)		LOG << "\tVP[" << i << "] >"			<< " Cyc:" << worldModel->getViewPartCycle(i)			<< " ObN:" << viewPartObjectsNums[i]			<< " Wei:" << viewPartWeights[i] << endl;}void HeadDecision::setWeightsForLookNormally(){/*	if (worldModel->getBallStatus() == BS_FREE_BALL ||		worldModel->getBallStatus() == BS_FREE_BALL_TMM ||		worldModel->getBallStatus() == BS_FREE_BALL_OPP ||		worldModel->getBallStatus() == BS_FREE_BALL_TMM_OPP)		haveBallRate = 1;	else		haveBallRate = 7;*/	haveBallRate = 1.2;	havePlayerRate = 7;	objectsNumRate = 0;}void HeadDecision::setWeightsForLookCarefully(){//	LOG << "HeadDecision::setWeightsForLookCarefully" << endl;/*	if (worldModel->getBallStatus() == BS_FREE_BALL ||		worldModel->getBallStatus() == BS_FREE_BALL_TMM ||		worldModel->getBallStatus() == BS_FREE_BALL_OPP ||		worldModel->getBallStatus() == BS_FREE_BALL_TMM_OPP)		haveBallRate = 1;	else		haveBallRate = 7;*/	haveBallRate = 1.2;	havePlayerRate = 7;	objectsNumRate = 0;}void HeadDecision::updateViewPartObjectsNum(){//	LOG << "HeadDecision::updateViewPartObjectsNum" << endl;	float deltaAngle;	unsigned i, j;		for (i = 0; i < VIEW_PARTS_NUM; i++)	{		viewPartObjectsNums[i] = 0;		// Counting full players.		for (j = 0; j < FULL_PLAYERS_NUM; j++)		{			if (worldModel->getFullPlayer(TID_TEAMMATE,j).isAlive() &&				!worldModel->getFullPlayer(TID_TEAMMATE,j).isBody())			{				deltaAngle = abs(getDeltaAngle(					worldModel->getFullPlayer(TID_TEAMMATE,j).getAbsVec().getDirection(),					worldModel->getViewPartDir(i)));				if (deltaAngle <= VIEW_PART_SIZE / 2)					viewPartObjectsNums[i]++;			}			if (worldModel->getFullPlayer(TID_OPPONENT,j).isAlive())			{				deltaAngle = abs(getDeltaAngle(					worldModel->getFullPlayer(TID_OPPONENT,j).getAbsVec().getDirection(),					worldModel->getViewPartDir(i)));				if (deltaAngle <= VIEW_PART_SIZE / 2)					viewPartObjectsNums[i]++;			}		}		// Counting half players.		for (j = 0; j < HALF_PLAYERS_NUM; j++)		{			if (worldModel->getHalfPlayer(TID_TEAMMATE,j).isAlive())			{				deltaAngle = abs(getDeltaAngle(					worldModel->getHalfPlayer(TID_TEAMMATE,j).getAbsVec().getDirection(),					worldModel->getViewPartDir(i)));				if (deltaAngle <= VIEW_PART_SIZE / 2)					viewPartObjectsNums[i]++;			}			if (worldModel->getHalfPlayer(TID_OPPONENT,j).isAlive())			{				deltaAngle = abs(getDeltaAngle(					worldModel->getHalfPlayer(TID_OPPONENT,j).getAbsVec().getDirection(),					worldModel->getViewPartDir(i)));				if (deltaAngle <= VIEW_PART_SIZE / 2)					viewPartObjectsNums[i]++;			}		}		// Counting quarter players.		for (j = 0; j < QUARTER_PLAYERS_NUM; j++)			if (worldModel->getQuarterPlayer(j).isAlive())			{				deltaAngle = abs(getDeltaAngle(					worldModel->getQuarterPlayer(j).getAbsVec().getDirection(),					worldModel->getViewPartDir(i)));				if (deltaAngle <= VIEW_PART_SIZE / 2)					viewPartObjectsNums[i]++;			}		// Counting the ball.		if (nextBall.getAbsVec().getMagnitude() >				worldModel->getBody().getVisibleDistance())		{			deltaAngle = abs(getDeltaAngle(				nextBall.getAbsVec().getDirection(),				worldModel->getViewPartDir(i)));			if (deltaAngle <= VIEW_PART_SIZE / 2)				viewPartObjectsNums[i]++;		}		// Counting the opponent goal		if (worldModel->getBall().getAbsVec().getMagnitude() < 5 &&			worldModel->getBody().getPos().getX() > 30)		{			Vector vec;			vec.setByPoints(worldModel->getBody().getPos(), Point(52, 5.5));			deltaAngle = abs(getDeltaAngle(				vec.getDirection(), worldModel->getViewPartDir(i)));			if (deltaAngle <= VIEW_PART_SIZE / 2)				viewPartObjectsNums[i]++;			vec.setByPoints(worldModel->getBody().getPos(), Point(52, -5.5));			deltaAngle = abs(getDeltaAngle(				vec.getDirection(), worldModel->getViewPartDir(i)));			if (deltaAngle <= VIEW_PART_SIZE / 2)				viewPartObjectsNums[i]++;		}		// Counting the forward angle		if (worldModel->getBall().getAbsVec().getMagnitude() < 3 &&			worldModel->getBody().getPos().getX() < 35)		{			Vector vec;			vec.setAsCartesian(10, 0);			deltaAngle = abs(getDeltaAngle(				vec.getDirection(), worldModel->getViewPartDir(i)));			if (deltaAngle <= VIEW_PART_SIZE / 2)				viewPartObjectsNums[i]++;		}	}}float HeadDecision::getViewPartWeight(unsigned viewPartNum){//	LOG << "HeadDecision::getViewPartWeight" << endl;	float weight;	float deltaAngle;	Vector oppGoalUpVec;	Vector oppGoalDownVec;	// Dont see weight	weight = worldModel->getViewPartCycle(viewPartNum) + 1;	// HaveBall weight	deltaAngle = abs(getDeltaAngle(worldModel->getViewPartDir(viewPartNum),		nextBall.getAbsVec().getDirection()));	if (deltaAngle <= VIEW_PART_SIZE / 2/* || 		nextBall.getAbsVec().getMagnitude() <=			worldModel->getBody().getVisibleDistance()*/) // SenseArea		weight *= haveBallRate;	// HavePlayer weight	if (viewPartObjectsNums[viewPartNum] > 0)		weight *= havePlayerRate;	// ObjectsNum weight	weight += viewPartObjectsNums[viewPartNum] * objectsNumRate;	return weight;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线观看你懂的| 北岛玲一区二区三区四区| 亚洲人精品一区| 国产日韩欧美综合在线| 久久久久久免费| 国产视频不卡一区| 亚洲国产精品二十页| 日韩免费一区二区| 久久婷婷色综合| 国产精品视频麻豆| 亚洲激情欧美激情| 免费成人结看片| 国产乱码精品一区二区三| 国产精品一级黄| gogo大胆日本视频一区| 在线亚洲精品福利网址导航| 欧美日韩精品一二三区| 精品理论电影在线观看| 国产精品国产精品国产专区不蜜| **性色生活片久久毛片| 亚洲成a人v欧美综合天堂下载 | av在线不卡网| 色综合激情五月| 欧美一区二区三区日韩视频| 久久综合色之久久综合| 国产精品久久免费看| 亚洲一区二区三区在线| 久久精品国产99久久6| 成人免费毛片高清视频| 色婷婷久久久久swag精品| 91精品国产欧美一区二区18| 国产欧美日韩在线视频| 亚洲国产精品一区二区www| 全国精品久久少妇| 成人av高清在线| 欧美精品三级在线观看| 中文字幕av不卡| 蜜桃视频一区二区| 懂色av噜噜一区二区三区av| 欧美日韩国产美女| 国产精品无遮挡| 日本美女一区二区| 91麻豆免费在线观看| 欧美成人激情免费网| 亚洲精选免费视频| 国产一区二区三区免费播放| 欧美中文字幕一二三区视频| 国产女同互慰高潮91漫画| 日韩精品乱码免费| 91在线丨porny丨国产| 久久久久久黄色| 亚洲一区二区在线免费看| 风间由美性色一区二区三区| 日韩欧美激情一区| 亚洲成人一二三| 色综合久久88色综合天天6| 久久久久久久免费视频了| 奇米色777欧美一区二区| 在线国产电影不卡| 国产精品灌醉下药二区| 国产美女在线精品| 精品日韩一区二区三区免费视频| 国产精品免费看片| 国产午夜亚洲精品理论片色戒| 午夜精品在线看| 欧美性色aⅴ视频一区日韩精品| 国产精品三级av在线播放| 国产乱码精品一区二区三区忘忧草 | 午夜免费久久看| 99re这里只有精品首页| 国产欧美日产一区| 国产成人免费视频网站高清观看视频| 7777精品伊人久久久大香线蕉完整版 | 久久久蜜桃精品| 亚洲男帅同性gay1069| ...av二区三区久久精品| 久久精品人人做人人综合| 免费在线成人网| 欧美一级理论片| 日韩成人午夜电影| 日韩视频一区在线观看| 国产专区欧美精品| 久久久久久久一区| kk眼镜猥琐国模调教系列一区二区| 久久久国产午夜精品| 粉嫩aⅴ一区二区三区四区| 中文字幕欧美区| 91免费看`日韩一区二区| 亚洲男同性恋视频| 在线成人午夜影院| 久久精品国产秦先生| 欧美v日韩v国产v| 夫妻av一区二区| 亚洲综合精品自拍| 精品国产乱码久久久久久1区2区| 大胆欧美人体老妇| 亚洲一区二区三区小说| 日韩小视频在线观看专区| 精品一区二区日韩| 中文字幕亚洲综合久久菠萝蜜| 色婷婷av一区二区三区大白胸 | 欧美一级久久久| 懂色中文一区二区在线播放| 一区二区三区欧美日| 日韩一级高清毛片| 99久久er热在这里只有精品66| 五月天欧美精品| 国产亚洲综合在线| 欧美私人免费视频| 国产精品99久久久| 亚洲h在线观看| 亚洲国产精品传媒在线观看| 欧美另类一区二区三区| 国产99久久久国产精品潘金网站| 尤物av一区二区| 久久久久久久久久久黄色| 欧美日本在线看| 岛国一区二区在线观看| 日韩av在线免费观看不卡| 成人欧美一区二区三区黑人麻豆| 69堂亚洲精品首页| 99精品久久免费看蜜臀剧情介绍| 免费人成精品欧美精品| 亚洲日本在线a| 精品免费一区二区三区| 欧美中文字幕亚洲一区二区va在线| 国模一区二区三区白浆| 亚洲成人综合网站| 亚洲免费观看高清完整版在线 | 成人激情动漫在线观看| 视频一区二区三区入口| 亚洲蜜臀av乱码久久精品| 久久久精品欧美丰满| 欧美成人猛片aaaaaaa| 欧美主播一区二区三区| 91黄色免费网站| 99热国产精品| 99久久综合狠狠综合久久| 国产综合成人久久大片91| 蜜臂av日日欢夜夜爽一区| 亚洲二区在线视频| 亚洲国产一区二区a毛片| 亚洲人成小说网站色在线| 国产欧美精品一区aⅴ影院| 精品国产一区二区三区久久久蜜月| 欧美色视频一区| 在线观看视频欧美| 欧美亚洲国产怡红院影院| 欧美在线制服丝袜| 欧洲精品在线观看| 色婷婷精品久久二区二区蜜臀av| 91理论电影在线观看| 99久久精品国产毛片| 99久久伊人精品| 97超碰欧美中文字幕| 色综合天天综合网天天狠天天| 99国产麻豆精品| 91热门视频在线观看| 91久久奴性调教| 欧美日韩综合不卡| 91超碰这里只有精品国产| 欧美日韩一区不卡| 欧美日韩成人综合在线一区二区| 在线播放日韩导航| 日韩欧美色综合| 欧美激情资源网| 一区二区三区在线播| 亚洲gay无套男同| 精品一区二区三区影院在线午夜 | 国产精品视频一二| 亚洲男人的天堂av| 天天av天天翘天天综合网| 蜜桃精品视频在线| 国产精品伊人色| 色婷婷久久久亚洲一区二区三区 | 欧美一级在线视频| 精品三级在线观看| 国产精品欧美一区喷水| 亚洲五码中文字幕| 国模冰冰炮一区二区| 色婷婷综合五月| 欧美不卡一区二区三区| 国产精品网站一区| 日韩影院精彩在线| av一区二区三区在线| 欧美一区二区三区免费视频| 亚洲国产精品成人久久综合一区| 亚洲主播在线观看| 国产麻豆精品一区二区| 91福利小视频| 日本一区二区三区电影| 亚洲电影在线免费观看| 成人一区二区三区视频在线观看| 欧美系列在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲成年人网站在线观看| av中文字幕亚洲| 欧美tickle裸体挠脚心vk| 亚洲精品第一国产综合野| 国产盗摄一区二区三区|