}
int genXConstraints(int n, boxf* bb, Variable** vs, Constraint*** cs,int transitiveClosure) {
- 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 = generateXConstraints(rs,vs,*cs,transitiveClosure?true:false);
- for(int i=0;i<n;i++) {
- delete rs[i];
- }
return m;
}
int genYConstraints(int n, boxf* bb, Variable** vs, Constraint*** cs) {
* useNeighbourLists determines whether or not a heuristic is used to deciding whether to resolve
* all overlap in the x pass, or leave some overlaps for the y pass.
*/
-int generateXConstraints(const vector<Rectangle*> &rs, Variable** vars,
+int generateXConstraints(const vector<Rectangle> &rs, Variable** vars,
Constraint** &cs, const bool useNeighbourLists) {
vector<Event> events;
events.reserve(2 * rs.size());
for(size_t i=0;i<rs.size();i++) {
- vars[i]->desiredPosition=rs[i]->getCentreX();
- Node *v = new Node(vars[i],*rs[i],rs[i]->getCentreX());
- events.emplace_back(Open,v,rs[i]->getMinY());
- events.emplace_back(Close,v,rs[i]->getMaxY());
+ vars[i]->desiredPosition=rs[i].getCentreX();
+ Node *v = new Node(vars[i],rs[i],rs[i].getCentreX());
+ events.emplace_back(Open,v,rs[i].getMinY());
+ events.emplace_back(Close,v,rs[i].getMaxY());
}
std::sort(events.begin(), events.end(), compare_events);
struct Constraint;
// returns number of constraints generated
-int generateXConstraints(const std::vector<Rectangle*> &rs, Variable** vars,
+int generateXConstraints(const std::vector<Rectangle> &rs, Variable** vars,
Constraint** &cs, const bool useNeighbourLists);
int generateYConstraints(const std::vector<Rectangle*> &rs, Variable** vars,
Constraint** &cs);