Exemplo n.º 1
0
void CShapeModel::GenerateShape(CVisDVector& param, CShape& desshape, EDataAnalysisMethod eMethod /*=ePCA*/)
{
    desshape.Resize(m_AvgShape.PointNum());
	
	if ( ePCA == eMethod )
	{
		assert(m_PCA2Model.IsReady());
		//m_Model.Reconstruct(eigenparam, desshape.Points());
		m_PCA2Model.Generate(desshape.Points(), param);
	}
	else if ( eNMF == eMethod )
	{
		assert(m_NMFModel.IsReady());
		m_NMFModel.Reconstruct(param, desshape.Points());
	}
}
Exemplo n.º 2
0
void CShapeModel::ApplyShapePos(double& Tx, double& Ty, double& s, double& theta, CShape& desShape, const CShape& normaledShape)
{
	double a = s * cos(theta);
    double b = s * sin(theta);

    double x, y;
    int m_iNbPoint = normaledShape.PointNum();
	desShape.Resize(m_iNbPoint);
    
	//rotate and scale
    for (int i = 0; i < m_iNbPoint; i++)
    {
        x = normaledShape.PointX(i);
        y = normaledShape.PointY(i);
        desShape.PointX(i) = a * x - b * y;
        desShape.PointY(i) = b * x + a * y;
    }
    //translate
    desShape.Translate(Tx, Ty);	
}