list<tiPoint > ClsTopologyRect::getPointsForSubPopulation(ClsBaseSubPopulation *clsBaseSubPopulation){ list<tiPoint > lstPointsReturn; int iWidth = pclsWidth->getValue(); int iHeight = pclsHeight->getValue(); if(dynamic_cast<ClsAll*>(clsBaseSubPopulation)){ lstPointsReturn = getAllPoints(iWidth, iHeight); } else if(dynamic_cast<ClsList*>(clsBaseSubPopulation)){ list<tiPoint > lstPairsSubPopulation = (dynamic_cast<ClsList*>(clsBaseSubPopulation))->getData(); list<tiPoint > lstPoints; lstPoints = getAllPoints(iWidth, iHeight); lstPointsReturn = AndLists(lstPoints, lstPairsSubPopulation); } else if(dynamic_cast<ClsRegion*>(clsBaseSubPopulation)){ ClsRegion* clsRegion = dynamic_cast<ClsRegion*>(clsBaseSubPopulation); int iRegionXStart = clsRegion->getXStart(); int iRegionYStart = clsRegion->getYStart(); int iRegionWidth = clsRegion->getWidth(); int iRegionHeight = clsRegion->getHeight(); lstPointsReturn = getPoints4Rect( iRegionXStart, iRegionYStart, iRegionWidth, iRegionHeight); } return lstPointsReturn; }
std::vector<Point> WorldGenerator::getFreeSpaces(World* world) { std::vector<Point> v = getAllPoints(world); for(const auto& t : getTakenSpaces(world)) v.erase(std::remove(v.begin(), v.end(), t), v.end()); return v; }
Curve Curve::mirror(int x) { vector<Point> points = getAllPoints(); vector<Point> newpoints; for (int i=0;i<points.size();i++) { Point P = points[i].mirror(x); newpoints.push_back(P); } return Curve(newpoints); }
void Curve::draw(Screen screen, Color C) { vector<Point> points = getAllPoints(); Point temp; Line L; for (int i=0;i<points.size();i++) { Point P(points[i].getAbsis(),points[i].getOrdinat()); if (i>0) { L.setLine(temp, P); L.draw(screen, C); } temp = P; } }