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

📄 pointfloatshapefeature.cpp

📁 An open source handwriting recongnition package!!!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	
	return (LTKShapeFeaturePtr)pointInst;
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 15-Mar-2007
* NAME			: getDistance
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
int PointFloatShapeFeature::getDistance(const LTKShapeFeaturePtr& shapeFeaturePtr, 
                                            float& outDistance) const
{
	float xDiff = 0, yDiff = 0, sinthetaDiff=0, costhetaDiff=0;

	PointFloatShapeFeature *inPointFloatFeature = (PointFloatShapeFeature*)(shapeFeaturePtr.operator ->());
	
	xDiff = (m_x) - inPointFloatFeature->getX();

    yDiff = (m_y) - inPointFloatFeature->getY();

    sinthetaDiff = (m_sinTheta) - inPointFloatFeature->getSinTheta();

    costhetaDiff = (m_cosTheta) - inPointFloatFeature->getCosTheta();
    
    outDistance = ( (xDiff * xDiff) + (yDiff * yDiff) + 
                  (sinthetaDiff * sinthetaDiff) + (costhetaDiff * costhetaDiff) );

	return SUCCESS;
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 15-Mar-2007
* NAME			: initialize
* DESCRIPTION	: To convert the string to xy value
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
int PointFloatShapeFeature::initialize(const string& initString)
{	
	stringVector tokens;

	LTKStringUtil::tokenizeString(initString, m_data_delimiter, tokens);

	//Token size must be 4
//	if(tokens.size() != 4)
	if(tokens.size() != 5)
		 return FAILURE; //Returning an error

	m_x = atof(tokens[0].c_str());
	m_y = atof(tokens[1].c_str());
	m_sinTheta = atof(tokens[2].c_str());
	m_cosTheta = atof(tokens[3].c_str());

	if(atoi(tokens[4].c_str()) == 1)
    {   
		m_penUp = true;
    }
	else
    {   
		m_penUp = false;
    }
	
	return SUCCESS;
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 15-Mar-2007
* NAME			: toString
* DESCRIPTION	: To convert the points to a string
* ARGUMENTS		: string : holds the string value of xy points
* RETURNS		: none
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
void PointFloatShapeFeature::toString(string& strFeat) const
{	
	ostringstream tempString;

    tempString << m_x << m_data_delimiter << m_y << m_data_delimiter << 
                  m_sinTheta << m_data_delimiter << m_cosTheta << 
                  m_data_delimiter << m_penUp;

    strFeat = tempString.str();
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 30-Mar-2007
* NAME			: addFeature
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
int PointFloatShapeFeature::addFeature(const LTKShapeFeaturePtr& secondFeature, 
                                          LTKShapeFeaturePtr& outResult ) const
{
	PointFloatShapeFeature* resultFeature = new PointFloatShapeFeature();

    PointFloatShapeFeature *inFeature = (PointFloatShapeFeature*)(secondFeature.operator ->());
    
	resultFeature->setX(m_x + inFeature->getX());
	resultFeature->setY (m_y + inFeature->getY());
	resultFeature->setSinTheta (m_sinTheta + inFeature->getSinTheta());
	resultFeature->setCosTheta (m_cosTheta + inFeature->getCosTheta());
	resultFeature->setPenUp (m_penUp);

    outResult = LTKShapeFeaturePtr(resultFeature);

	return SUCCESS;
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 30-Mar-2007
* NAME			: subtractFeature
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
int PointFloatShapeFeature::subtractFeature(const LTKShapeFeaturePtr& secondFeature, 
                                           LTKShapeFeaturePtr& outResult ) const 
{
	PointFloatShapeFeature* resultFeature=new PointFloatShapeFeature();

    PointFloatShapeFeature *inFeature = (PointFloatShapeFeature*)(secondFeature.operator ->());

	resultFeature->setX (m_x - inFeature->getX());
	resultFeature->setY (m_y - inFeature->getY());
	resultFeature->setSinTheta (m_sinTheta - inFeature->getSinTheta());
	resultFeature->setCosTheta (m_cosTheta - inFeature->getCosTheta());
	resultFeature->setPenUp (m_penUp);

	outResult = LTKShapeFeaturePtr(resultFeature);

	return SUCCESS;
}

/**********************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 30-Mar-2007
* NAME			: scaleFeature
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007				Description: Implemented Support for theta
*************************************************************************************/
int PointFloatShapeFeature::scaleFeature(float alpha, LTKShapeFeaturePtr& outResult) const
{
	PointFloatShapeFeature* resultFeature=new PointFloatShapeFeature();

	resultFeature->setX (m_x * alpha);
	resultFeature->setY (m_y * alpha);
	resultFeature->setSinTheta (m_sinTheta * alpha);
	resultFeature->setCosTheta (m_cosTheta * alpha);
	resultFeature->setPenUp(m_penUp);

	outResult = LTKShapeFeaturePtr(resultFeature);

	return SUCCESS;
}

/***************************************************************************
* AUTHOR		: Saravanan R.
* DATE			: 30-Mar-2007
* NAME			: scaleFeature
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  Naveen Sundar G.			Date: 13-Sept-2007		Description: 
                                                                                      Implemented Support for theta
*****************************************************************************/
int PointFloatShapeFeature::toFloatVector(floatVector& floatVec)
{
	floatVec.push_back(m_x);
	floatVec.push_back(m_y);
	floatVec.push_back(m_sinTheta);
	floatVec.push_back(m_cosTheta);
	if(m_penUp == true)
		floatVec.push_back(1.0);
	else
		floatVec.push_back(0.0);

	return SUCCESS;
}

/***************************************************************************
* AUTHOR		: Nidhi Sharma
* DATE			: 23-Apr-2008
* NAME			: initialize
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  			Date		            Description: 
                                                                                      
*****************************************************************************/
int PointFloatShapeFeature::initialize(const floatVector& initFloatVector)
{

    if (initFloatVector.size() == 0)
    {
        return FAILURE;
    }
    
    m_x = initFloatVector[0];
	m_y = initFloatVector[1];
	m_sinTheta = initFloatVector[2];
	m_cosTheta = initFloatVector[3];

	if(initFloatVector[4] == 1)
    {   
		m_penUp = true;
    }
	else
    {   
		m_penUp = false;
    }
	
	return SUCCESS;
}

/***************************************************************************
* AUTHOR		: Nidhi Sharma
* DATE			: 23-Apr-2008
* NAME			: getFeatureDimension
* DESCRIPTION	: 
* ARGUMENTS		: 
* RETURNS		: 
* NOTES			:
* CHANGE HISTROY
* Author:  			Date		            Description: 
                                                                                      
*****************************************************************************/

int PointFloatShapeFeature::getFeatureDimension()
{
    return 5;
}

⌨️ 快捷键说明

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