?? objectanglecheck.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 + -