obstacleavoidance.h

来自「FIRA 5V5比赛中一个机器人源代码 本科毕业设计做的」· C头文件 代码 · 共 65 行

H
65
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?