Shape* ShapeManager::GenerateShape() { int random = Random::Range(0, 7); Shape::ShapeType shapeType = Shape::ShapeType::Box; if(random == 0) { shapeType = Shape::ShapeType::Line; } else if(random == 1) { shapeType = Shape::ShapeType::Box; } else if(random == 2) { shapeType = Shape::ShapeType::S; } else if(random == 3) { shapeType = Shape::ShapeType::Z; } else if(random == 4) { shapeType = Shape::ShapeType::T; } else if(random == 5) { shapeType = Shape::ShapeType::J; } else if(random == 6) { shapeType = Shape::ShapeType::L; } SDL_Surface* img = NULL; random = Random::Range(0, 4); if(random == 0) { img = ImageLoader::GetImage(ImageLoader::Image::RedSquare); } else if(random == 1) { img = ImageLoader::GetImage(ImageLoader::Image::BlueSquare); } else if(random == 2) { img = ImageLoader::GetImage(ImageLoader::Image::GreenSquare); } else if(random == 3) { img = ImageLoader::GetImage(ImageLoader::Image::YellowSquare); } return GenerateShape(shapeType, img); }
void CShapeModel::GetShapeBase(int iEigen, int nVarChange, CShape &shape) { CVisDVector eigenparam; eigenparam.Resize(m_PCA2Model.NbEigen()); eigenparam = 0.; iEigen = min(eigenparam.Length()-1, max(0, iEigen)); nVarChange = min(5, max(0, nVarChange)); eigenparam[iEigen] = m_PCA2Model.EigenVal(iEigen)*nVarChange; GenerateShape(eigenparam, shape); }
void CShapeModel::GenerateShapeWithPos(double Tx, double Ty, double s, double theta, CVisDVector& param, CShape& desshape,EDataAnalysisMethod eMethod /*=ePCA*/) { GenerateShape(param, desshape, eMethod); double a = s * cos(theta); double b = s * sin(theta); double x, y; int m_iNbPoint = desshape.PointNum(); //rotate and scale for (int i = 0; i < m_iNbPoint; i++) { x = desshape.PointX(i); y = desshape.PointY(i); desshape.PointX(i) = a * x - b * y; desshape.PointY(i) = b * x + a * y; } //translate desshape.Translate(Tx, Ty); }