Bottom-Left Placement Heuristic. More...

#include <rplacementbottomleft.h>

Inheritance diagram for RPlacementBottomLeft:
[legend]
Collaboration diagram for RPlacementBottomLeft:
[legend]

Public Member Functions

 RPlacementBottomLeft (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)
 
RGeoInfoNextObject (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)
 
RFreePolygonsGetFreePolygons (void)
 
RLayoutGetLayout (void) const
 
virtual ~RPlacementHeuristic (void)
 

Private Attributes

RPoint NextObj
 
RPoint NextLine
 

Additional Inherited Members

- Protected Member Functions inherited from RPlacementHeuristic
virtual RGeoInfoSelectNextObject (void)
 
- Protected Attributes inherited from RPlacementHeuristic
RRandomRandom
 
RGridGrid
 
RLayoutLayout
 
RSize Limits
 
bool WeightedDistances
 
size_t NbObjs
 
size_t NbObjsOk
 
RRect Result
 
double Distances
 
RGeoInfo ** Order
 
RGeoInfoCurInfo
 
RFreePolygons Free
 
bool CalcFree
 
bool UseFree
 
bool AllOri
 
RContainer< ObjectPos, true,
false > 
ValidPos
 
RPromKernel Prom
 
RPromCriterionDist
 
const RParamDistParams
 
RPromCriterionArea
 
const RParamAreaParams
 
bool FirstRandom
 

Detailed Description

Bottom-Left Placement Heuristic.

This class implements a bottom-left heuristic. This heuristic handles objects "line after line". The first object is place in bottom-left part of the rectangle representing the limits. After that, the heuristic try to place so much objects as possible to the right of the first object. When it is not more possible, the next object is place top of the first one. The heuristic try then to put the rest of the objects to the right and so on.

Constructor & Destructor Documentation

RPlacementBottomLeft ( size_t  maxobjs,
bool  calc,
bool  use,
RRandom r,
RParamStruct dist,
RParamStruct area,
bool  firstrandom,
bool  ori 
)

Construct the bottom-left heuristic.

Parameters
maxobjsMaximal number of objects to place.
calcMust free polygons be calculated.
useMust free polygons be used.
rThe random generator to use.
distDistance criteria parameters.
areaArea criteria parameters.
firstrandomMust the first object be placed randomly?
oriMust all orientation be tested.

Member Function Documentation

virtual void Init ( RProblem2D prob,
RLayout layout,
RGrid grid 
)
virtual

Initialize the heuristic.

Parameters
probThe problem.
layoutLayout.
gridGrid.

Reimplemented from RPlacementHeuristic.

virtual void SearchValidPositions ( RGeoInfo info)
virtual

Calculate all the possible positions to place a given object. The method must register these valid positions with the 'AddValidPosition' method.

Parameters
infoGeometric information representing the object placed.

Implements RPlacementHeuristic.

virtual void PostPlace ( RGeoInfo info,
const RPoint pos 
)
virtual

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
infoGeometric information representing the object placed.
posThe position where it is placed.

Implements RPlacementHeuristic.

Member Data Documentation

RPoint NextObj
private

Position where to place the next object.

RPoint NextLine
private

Where the next line begin.