📄 obstacleavoidance.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 + -