return m;
}
int genYConstraints(int n, boxf* bb, Variable** vs, Constraint*** cs) {
- std::vector<Rectangle*> rs(n);
+ std::vector<Rectangle> rs;
for(int i=0;i<n;i++) {
- rs[i]=new Rectangle(bb[i].LL.x,bb[i].UR.x,bb[i].LL.y,bb[i].UR.y);
+ rs.emplace_back(bb[i].LL.x,bb[i].UR.x,bb[i].LL.y,bb[i].UR.y);
}
int m = generateYConstraints(rs,vs,*cs);
- for(int i=0;i<n;i++) {
- delete rs[i];
- }
return m;
}
/**
* Prepares constraints in order to apply VPSC vertically to remove ALL overlap.
*/
-int generateYConstraints(const vector<Rectangle*> &rs, Variable** vars,
+int generateYConstraints(const vector<Rectangle> &rs, Variable** vars,
Constraint** &cs) {
vector<Event> events;
events.reserve(2 * rs.size());
for(size_t i=0;i<rs.size();i++) {
- vars[i]->desiredPosition=rs[i]->getCentreY();
- Node *v = new Node(vars[i],*rs[i],rs[i]->getCentreY());
- events.emplace_back(Open,v,rs[i]->getMinX());
- events.emplace_back(Close,v,rs[i]->getMaxX());
+ vars[i]->desiredPosition=rs[i].getCentreY();
+ Node *v = new Node(vars[i],rs[i],rs[i].getCentreY());
+ events.emplace_back(Open,v,rs[i].getMinX());
+ events.emplace_back(Close,v,rs[i].getMaxX());
}
std::sort(events.begin(), events.end(), compare_events);
NodeSet scanline;
// returns number of constraints generated
int generateXConstraints(const std::vector<Rectangle> &rs, Variable** vars,
Constraint** &cs, const bool useNeighbourLists);
-int generateYConstraints(const std::vector<Rectangle*> &rs, Variable** vars,
+int generateYConstraints(const std::vector<Rectangle> &rs, Variable** vars,
Constraint** &cs);