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

📄 objectanglecheck.h

📁 路径规划源程序
💻 H
字号:
// ObjectAngleCheck.h: interface for the ObjectAngleCheck class.
//
//////////////////////////////////////////////////////////////////////
// ***************************************************************
//  ObjectAngleCheck   version:  1.0   ? date: 12/26/2007
//  -------------------------------------------------------------
//  本类中包含对0~360度坐标系中角度的几个判断算法,供其它类继承使用
// 包括了判断一个夹角是否覆盖了0~360度分界线;判断两个角度所形成的最小夹角值;
//另有计算两个角度间的角度增量,两角度间的关系为逆时针则为正。
//  -------------------------------------------------------------
//  Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
// 
// ***************************************************************
#if !defined(AFX_OBJECTANGLECHECK_H__C8B2085D_0C9B_42FB_BA90_9A938F0DEBF6__INCLUDED_)
#define AFX_OBJECTANGLECHECK_H__C8B2085D_0C9B_42FB_BA90_9A938F0DEBF6__INCLUDED_

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


#define CONSTTWOPI 6.283185307179586
#define PI 3.141592653589793
class ObjectAngleCheck  
{
public:
	ObjectAngleCheck();
	virtual ~ObjectAngleCheck();
	/**
	*计算两个角间的最小角度偏差,无正负,两个角度输入无先后,角度单位为度
	*
	*/
	double GetShortDistanceBetween2Angle(double Angle1, double Angle2);	
	/** 
	*@brief CheckObstacleIsBehind函数用于检测某障碍物是否横跨0、360度分界线,
	*在-180~180坐标系中则检测是否横跨在+-180度分界线上
	*
	*输入依次为该物体的左边界角、中心角、右边界角,当是横跨时为真,否则为假。
	*@todo 在本方法中横跨的情况所出问题最多,检测的依据也至今仍非完善。
	*/	
	bool CheckObstacleIsBehind(double dLBoundaryAngle,double dCenterAngle,double dRightBoundaryAngle);
	/** 
	*@brief GetAngulardisplacementIn2Angle函数用于获取两个角间的位移。
	*
	*计算两个角间的最小角度偏差,类似GetShortDistanceBetween2Angle,但考虑到了两个角间形成的偏差是
	*由于顺时针旋转导致的还是逆时针旋转形成的偏差,因此输入的两个角度是有先后的.
	*计算的是AngleLatter 相对于AnglePre的,角度单位为弧度
	*
	*@parm AnglePre 该参数输入的是前一时刻的角或称基准角
	*@parm AngleLatter 该参数输入的是后一时刻的角或称偏移后角
	*@output 输出带正负的差角,正则表示是由于AnglePre到AngleLatter逆时针旋转形成,负则表示顺时针旋转新城
	*
	*/
	double GetAngulardisplacementIn2Angle(double AnglePre, double AngleLatter);
	/** 
	*@brief GetAngulardisplacementIn2Angle函数用于获取两个角间的位移。
	*
	*计算两个角间的最小角度偏差,作用与GetAngulardisplacementIn2Angle一样,不过输入角度单位为度
	*计算的是AngleLatter 相对于AnglePre的,角度单位为度
	*
	*@parm AnglePre 该参数输入的是前一时刻的角或称基准角
	*@parm AngleLatter 该参数输入的是后一时刻的角或称偏移后角
	*@output 输出带正负的差角,正则表示是由于AnglePre到AngleLatter逆时针旋转形成,负则表示顺时针旋转新城
	*
	*/
	double GetAngulardisplacementIn2Angle_Degree(double AnglePre, double AngleLatter);
	/**
	*限制角度在0~2pi
	*/
	void LimitAngleIn0_2Pi(double &AngleInRadius);

	void LimitAngleIn0_2Pi(float &AngleInRadius);
	/**
	*限制角度在0~360度
	*/
	void LimitAngleIn0_360Degree(double &AngleInDegree);
	/**
	*角度度到弧度的单位转化,带有正负
	*/
	 double TransAngleToDegree(double Angle);
	 /**
	 *弧度到角度度的单位转化,带有正负
	 */
	 double TransAngleToArc(double Angle);
};

#endif // !defined(AFX_OBJECTANGLECHECK_H__C8B2085D_0C9B_42FB_BA90_9A938F0DEBF6__INCLUDED_)

⌨️ 快捷键说明

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