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

📄 sir_pf_share.h

📁 InnovLabSimu在vc++下实现
💻 H
字号:
#pragma once
#include <vector>
#include <math.h>
namespace PF_SPA
{
	/**
	*状态变量的范围,及部分与之相关的函数,状态范围的单位为像素数,状态变量范围的坐标系为状态的坐标系,比如机器人世界坐标系
	*/
	struct StateRange 
	{
		StateRange(float Xmin,float Xmax,float Ymin,float Ymax,float OriMin,float OriMax)//三维的默认构造函数
		{
			AddStateRange(0,Xmin,Xmax);
			AddStateRange(1,Ymin,Ymax);
			AddStateRange(2,OriMin,OriMax);
		}
		~StateRange()
		{

		}
		std::vector<std::vector<float>>m_vStateRage;///<状态空间每一维的大小范围
		bool CheckRangeVal(float MinVal,float MaxVal)
		{
			return MaxVal>=MinVal?true:false;
		}
		/**
		*@brief 添加状态范围到范围变量m_vStateRage中
		*
		*@parm DimensionIndex状态维数下标0开始
		*@parm MinVal 当前状态最小值
		*@parm MaxVal 当前状态最大值
		*/
		bool AddStateRange(unsigned DimensionIndex,float MinVal,float MaxVal)
		{
			if (CheckRangeVal(MinVal,MaxVal))
			{			
				
				if (DimensionIndex>=m_vStateRage.size())//若输入的状态维数下标超过了已有范围则直接压入
				{
					std::vector<float>Range;
					Range.push_back(MinVal);
					Range.push_back(MaxVal);
					m_vStateRage.push_back(Range);
				}
				else
				{
					m_vStateRage[DimensionIndex][0]=MinVal;
					m_vStateRage[DimensionIndex][1]=MaxVal;
				}
			}
			return true;
		}	

		/**
		*@brief 查找范围变量m_vStateRage内容,有则为真,否则返回假
		*
		*@parm DimensionIndex状态维数下标0开始
		*@parm MinVal 当前状态最小值
		*@parm MaxVal 当前状态最大值
		*/
		bool QueryStateRange(unsigned DimensionIndex,float& MinVal,float& MaxVal)
		{
			if (DimensionIndex<m_vStateRage.size())//有效范围内
			{
				MinVal=m_vStateRage[DimensionIndex][0];
				MaxVal=m_vStateRage[DimensionIndex][1];
				return true;
			}
			else
			{
				return false;
			}
		}
		/**
		*@brief 查找范围变量m_vStateRage的维数,返回的维数是从1开始的
		*
		*/
		unsigned QueryStateDimension()
		{
			return m_vStateRage.size();
		}

	};
	

}

⌨️ 快捷键说明

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