public class ObstacleObject extends ObstacleObjectFrame
This version of the ObstacleObject internal constraint allows the use of multiple dboxes per shape.
TODO, describe how it works and what is the idea behind this implementation?
frame
Constructor and Description 

ObstacleObject(Geost geost,
GeostObject obstacle,
int[] selectedDimensions)
It constructs an internal constraint to constraint the objects not to overlap with this
obstacle object.

Modifier and Type  Method and Description 

int[] 
absInfeasible(Geost.SweepDirection minlex)
It provides the largest or smallest point contained in the forbidden area represented by this
constraint.

int 
cardInfeasible()
It provides an approximation of the number of infeasible points enforced by this constraint only.

String 
checkInvariants()
It checks that this constraint has consistent data structures.

DBox 
isFeasible(Geost.SweepDirection min,
LexicographicalOrder order,
GeostObject o,
int currentShape,
int[] c)
It determines whether the given point is a feasible origin of object o, considering
this constraint only.

boolean 
isSingleUse()
In some cases, a constraint is used only once per sweep direction on a path
from root to leaf in the search tree.

boolean 
isStatic()
It provides information about the constraint future.

String 
toString() 
void 
updateFrame()
updates the frame given the current values of the object coordinate variables.

definingVariables, timeOnlyCheck
public ObstacleObject(Geost geost, GeostObject obstacle, int[] selectedDimensions)
geost
 the constraint for which this internal constraint has been created.obstacle
 the obstacle object which is responsible for this constraint.selectedDimensions
 the dimensions on which the constraint is applicable.public String checkInvariants()
ObstacleObjectFrame
checkInvariants
in class ObstacleObjectFrame
public int[] absInfeasible(Geost.SweepDirection minlex)
InternalConstraint
TODO, is this function potentially still useful? If not remove, if yes then adapt the description about event point series. What is it used now for? I will keep it as it may be used later on, but for sure the code implementing those functions is not tested much or requires some cleaning.
This allows to build an event point series that stays consistent whatever the lexical order is, and whatever the object to place is (some shifting is applied to take the object's shape into account)
The dimension of the point returned is k+1, where k is the object dimension. The last dimension is time.
absInfeasible
in class ObstacleObjectFrame
minlex
 defines whether the maximal or minimal point should be returnedpublic int cardInfeasible()
InternalConstraint
This information is used as a heuristic in the sweeping algorithm to decide which constraint to use, so that the constraints that cover the largest space are used first.
cardInfeasible
in class ObstacleObjectFrame
public DBox isFeasible(Geost.SweepDirection min, LexicographicalOrder order, GeostObject o, int currentShape, int[] c)
InternalConstraint
The boundaries of the forbidden area must have the following properties: the lower extremum has to be infeasible, but the upper extremum has to be feasible (with respect to this constraint only).
The dimension of the DBox returned is k+1, where k is the object dimension. The last dimension is time.
isFeasible
in class ObstacleObjectFrame
min
 the direction of the sweeporder
 the order to be usedo
 the object the constraint is applied tocurrentShape
 the shape id that is currently considered for oc
 the current position of the sweep.public String toString()
toString
in class ObstacleObjectFrame
public boolean isStatic()
InternalConstraint
TODO the description above suggests that it should be called isDynamic as it returns false if the constraint outboxes stay the same.
(not taking placed object into account; i.e. absInfeasible will always return the same points)
isStatic
in class ObstacleObjectFrame
public boolean isSingleUse()
InternalConstraint
TODO, what is the example of such constraint?
Use this function to provide the information to Geost.
isSingleUse
in class ObstacleObjectFrame
public void updateFrame()
ObstacleObjectFrame
updateFrame
in class ObstacleObjectFrame
Copyright © 2020. All rights reserved.