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

📄 obstacleavoidance.h

📁 FIRA 5V5比赛中一个机器人源代码 本科毕业设计做的
💻 H
字号:
// ObstacleAvoidance.h: interface for the CObstacleAvoidance class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OBSTACLEAVOIDANCE_H__C47F30B0_066C_48B1_9A9F_26170C2035D7__INCLUDED_)
#define AFX_OBSTACLEAVOIDANCE_H__C47F30B0_066C_48B1_9A9F_26170C2035D7__INCLUDED_

#include "Strategy.h"

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

const long MAX_AVOIDANCE_POINT = 8;

typedef struct
{
	BYTE ObstacleType; //0 = Home Robot; 1 = Opponent Robot; 2 = Ball;
	Vector3D Position;
	AngleType Angle;
	Vector3D AvoidancePoint[MAX_AVOIDANCE_POINT];
	Vector3D SelectedAvoidancePoint;
	double DistanceFromStartingPoint;
	BYTE RankInDistance;
	BYTE Group;
}ObstacleAvoidanceArray;

typedef struct
{
	DWORD NumberOfObstacle;
	ObstacleAvoidanceArray ObstacleData[100];
	Vector3D StartingPoint;
	Vector3D EndingPoint;
}ObstacleAvoidanceStruct;

class CObstacleAvoidance  
{
public:
	CObstacleAvoidance(Environment *envPointer, UserDefStruct *UserDataPointer);
	virtual ~CObstacleAvoidance();

private:
	void InitializeObstacleAvoidance();
	double CalculatePointToPointAngleDegree(Vector3D StartPoint, Vector3D EndPoint);
	double CalculatePointToPointAngleRadian(Vector3D StartPoint, Vector3D EndPoint);
	double CalculatePointToPointDistance(Vector3D StartPoint, Vector3D EndPoint);
	void DetermineObstacle(ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	void SortingObstacleInDistance(ObstacleAvoidanceStruct &TempObstacleAvoidanceData, ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	void CalculateAvoidancePoint(ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	void ObstacleGrouping(ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	void SetGroupObstacleAvoidancePoint(ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	Vector3D SelectAvoidancePoint(ObstacleAvoidanceStruct &ObstacleAvoidanceData);
	BOOL CheckObstacleWithinPath(Vector3D StartingPoint, Vector3D EndingPoint, Vector3D ObstaclePoint);
	BOOL CheckPointWithinObstacle(ObstacleAvoidanceStruct &ObstacleAvoidanceData, Vector3D &AvoidancePoint, int ObstacleID);
public:
	void ExecuteObstacleAvoidance(Vector3D StartingPoint, Vector3D EndingPoint, Vector3D &AvoidancePoint, BOOL &NeedToAvoid);

private:
	UserDefStruct *UserData;
	Environment *env;
	ObstacleAvoidanceStruct ObstacleAvoidanceData;
};

#endif // !defined(AFX_OBSTACLEAVOIDANCE_H__C47F30B0_066C_48B1_9A9F_26170C2035D7__INCLUDED_)

⌨️ 快捷键说明

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