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

📄 kick.cpp

📁 机器人足球的基本动作函数
💻 CPP
字号:
void Kick2(Environment *env , int  robot , Vector3D ToPos )
{
	Mydata * p;
	p=(Mydata *)env->userData;
	
	double LimitedCircle = 3;
	Vector3D ball = Meetball_p(env,robot);	//use the predictball position

	Vector3D RobotToBall;		//人和球的相对位置
	RobotToBall.x = ball.x - p->robot[robot].pos.x ;
	RobotToBall.y = ball.y - p->robot[robot].pos.y ;
	RobotToBall.z = Atan(p->robot[robot].pos , ball);
	
	Vector3D BallToGate ;		//球和球门的相对位置
	BallToGate.x = ToPos.x - ball.x ;
	BallToGate.y = ToPos.y - ball.y ;
	BallToGate.z = Atan(ball , ToPos);
	
	double gateangle=BallToGate.z;

	double RunAngle ;
	RunAngle = RobotToBall.z - BallToGate.z;
	RegulateAngle(RunAngle);
	
	double dis= Distance(ball,p->robot[robot].pos);

	if(dis > 3*LimitedCircle){
		Vector3D Center;
		if(RunAngle >0){
			BallToGate.z -=90;
		}
		else{
			BallToGate.z +=90;
		}
		
		RegulateAngle(BallToGate.z);
		Center.x = ball.x + LimitedCircle*cos(BallToGate.z /180.0);
		Center.y = ball.y + LimitedCircle*sin(BallToGate.z /180.0);
		Center.z = 0;
		double distance = Distance(Center,p->robot[robot].pos);
		
		if(distance < 2*LimitedCircle)
		{
			RunAngle = RobotToBall.z + RunAngle /2;	// 可以调整  2 
		}
		else{
			double CenAngle= Atan(p->robot[robot].pos,Center);
			if(RunAngle <0){
				RunAngle = CenAngle-180*LimitedCircle*asin(LimitedCircle/distance)/3.142;
				RegulateAngle(RunAngle);
			}
			else{
				RunAngle = CenAngle+180*LimitedCircle*asin(LimitedCircle/distance)/3.142;
				RegulateAngle(RunAngle);
			}
		}
		
	}
	else{

		
		RunAngle = RobotToBall.z + RunAngle /2;	// 可以调整  2 
		RegulateAngle(RunAngle);
	}
	double paraA=gateangle - p->robot[robot].rotation;
	if(paraA<0){
		paraA=-paraA;
	}
	if(paraA>90){
		paraA=180-paraA;
	}
	if(0.1>paraA)
	{
		paraA=0.1;
	}
	double paraB=125*dis/3*LimitedCircle*10/paraA;
	if(paraB>125){
		paraB=125;
	}
	PAngle(env,robot,RunAngle,paraB);
	
}




⌨️ 快捷键说明

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