📄 pointfloatshapefeature.cpp
字号:
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 + -