Edge Placement Heuristic. More...
#include <rplacementedge.h>
Public Member Functions | |
RPlacementEdge (size_t maxobjs, bool calc, bool use, RRandom &r, RParamStruct *dist, RParamStruct *area, bool firstrandom, bool ori) | |
virtual void | Init (RProblem2D *prob, RLayout *layout, RGrid *grid) |
virtual void | SearchValidPositions (RGeoInfo *info) |
virtual void | PostPlace (RGeoInfo *info, const RPoint &pos) |
Public Member Functions inherited from RPlacementHeuristic | |
RPlacementHeuristic (size_t maxobjs, bool calc, bool use, RRandom &r, RParamStruct *dist, RParamStruct *area, bool firstrandom, bool ori) | |
RGeoInfo * | NextObject (void) |
void | Run (RProblem2D *prob, RLayout *layout, RGrid *grid) |
void | AddValidPosition (RPoint &pos) |
virtual void | PostRun (void) |
RRect | GetResult (void) |
double | GetDistances (void) |
bool | IsEnd (void) |
size_t | GetNbObjsOk (void) |
RFreePolygons * | GetFreePolygons (void) |
RLayout * | GetLayout (void) const |
virtual | ~RPlacementHeuristic (void) |
Private Attributes | |
RPoint | Levels [40] |
size_t | NbLevels |
RPoint | Actual |
RPoint | Max |
RPoint | Last |
size_t | CurLevel |
Additional Inherited Members | |
Protected Member Functions inherited from RPlacementHeuristic | |
virtual RGeoInfo * | SelectNextObject (void) |
Protected Attributes inherited from RPlacementHeuristic | |
RRandom & | Random |
RGrid * | Grid |
RLayout * | Layout |
RSize | Limits |
bool | WeightedDistances |
size_t | NbObjs |
size_t | NbObjsOk |
RRect | Result |
double | Distances |
RGeoInfo ** | Order |
RGeoInfo * | CurInfo |
RFreePolygons | Free |
bool | CalcFree |
bool | UseFree |
bool | AllOri |
RContainer< ObjectPos, true, false > | ValidPos |
RPromKernel | Prom |
RPromCriterion * | Dist |
const RParam * | DistParams |
RPromCriterion * | Area |
const RParam * | AreaParams |
bool | FirstRandom |
Detailed Description
Edge Placement Heuristic.
The RPlacementEdge class provides an edge placement heuristic. The RPlacementEdge class provides an edge placement heuristic, it is a modified version of the bottom-left heuristic where the resulting rectangle have a width and a height in proportiion to the limits.
This heuristic hanbles objects in the edge. The first object is place in bottom-left part of the rectangle representing the limits. After that, the heuristic try to place the next object either at the right or on the top of the first one depending of the width and height of the first object. The next objects are then place to try to fill the resulting rectangle while his width and height are proportional to the limits.
Constructor & Destructor Documentation
RPlacementEdge | ( | size_t | maxobjs, |
bool | calc, | ||
bool | use, | ||
RRandom & | r, | ||
RParamStruct * | dist, | ||
RParamStruct * | area, | ||
bool | firstrandom, | ||
bool | ori | ||
) |
Construct the edge heuristic.
- Parameters
-
maxobjs The maximum objects to placed fore this object. calc Must free polygons be calculated. use Must free polygons be used. r The random generator to use. dist Distance criteria parameters. area Area criteria parameters. firstrandom Must the first object be placed randomly? ori Must all orientation be tested.
Member Function Documentation
|
virtual |
Initialize the heuristic.
- Parameters
-
prob The problem. layout Layout. grid Grid.
Reimplemented from RPlacementHeuristic.
|
virtual |
Calculate all the possible positions to place a given object. The method must register these valid positions with the 'AddValidPosition' method.
- Parameters
-
info Geometric information representing the object placed.
Implements RPlacementHeuristic.
This method is called each time a given object is placed at a given position. It can be used to make some specific computational updates.
This method must update Result, the rectangle bounding all placed objects.
- Parameters
-
info Geometric information representing the object placed. pos The position where it is placed.
Implements RPlacementHeuristic.
Member Data Documentation
|
private |
Array to hold the different lines actually handled by the heuristic.
|
private |
The number of total lines handled.
|
private |
Position where the next object has to be placed.
|
private |
The dimension of the resulting rectangle.
|
private |
Indicate where a new line has to be added.
|
private |
Current line handled by the heuristic.