public class DBox extends Object
Modifier and Type | Field and Description |
---|---|
static SimpleArrayList<SimpleArrayList<DBox>> |
freeBoxes
static store of available boxes, accessible by dimension.
|
int[] |
length
It specifies for each dimension the length of dbox in that dimension.
|
int[] |
origin
It specifies point in n-dimensional space where the dbox originates from.
|
Constructor and Description |
---|
DBox(int dimension)
constructs a new Box.
|
DBox(int[] origin,
int[] length)
constructs a new Box.
|
Modifier and Type | Method and Description |
---|---|
int |
area()
It computes the area in 2D case or volume in 3D case.
|
static DBox |
boundingBox(Collection<DBox> boxes)
computes the bounding box of the given collection of boxes
|
String |
checkInvariants()
It checks whether the DBox is consistent.
|
boolean |
containsPoint(int[] pointCoordinates)
It checks if this DBox contains the point as specified by an array of coordinates.
|
DBox |
copyInto(DBox box)
It copies this DBox into given DBox.
|
static void |
dispatchBox(DBox unusedBox)
It allows the system to reuse the given box by placing it into the pool of
allocated boxes.
|
boolean |
equals(Object obj) |
static DBox |
getAllocatedInstance(int dimension)
It returns an instance of DBox of the corresponding dimension,
using a previously allocated one if possible
|
int |
hashCode() |
DBox |
intersectWith(DBox other)
It intersects this DBox with the given DBox.
|
DBox |
intersectWith(DBox other,
int[] otherOffset)
It intersects this DBox with the given DBox, but the other DBox is
shifted by the specified offset.
|
DBox |
intersectWith(int[] offset,
DBox other,
int[] otherOffset)
It intersects this DBox with a view of the given DBox that was
shifted according to the given offset.
|
static DBox |
newBox(int dimension)
It returns an usable box, reusing a box from the pool if possible.
|
static String |
poolStatus()
It provides a string representation of the DBoxes which are present
in the DBox pool.
|
Collection<DBox> |
subtract(DBox hole,
Collection<DBox> difference)
computes the difference between this box and the given box.
|
Collection<DBox> |
subtractAll(Collection<DBox> others,
Collection<DBox> result)
It computes the result of a subtraction from this box of all the boxes given.
|
static Collection<DBox> |
subtractAll(Collection<DBox> source,
Collection<DBox> holes,
Collection<DBox> result)
It computes the result of a subtraction from the given collection of boxes of all the boxes given
in the subtracting collection.
|
static void |
supportDimension(int dimension)
It makes sure that there is a slot of the given dimension in the slot.
|
String |
toString() |
public static final SimpleArrayList<SimpleArrayList<DBox>> freeBoxes
public final int[] origin
public final int[] length
public DBox(int[] origin, int[] length)
origin
- it specifies the origin of the DBox in the n-dimensional space.length
- it specifies the length of the Dbox in the n-dimensional space.public DBox(int dimension)
dimension
- it specifies the dimension of the createed DBox.public static final void supportDimension(int dimension)
It has to be called at least once before using newBox() and dispatchBox().
dimension
- the number of dimensionspublic String checkInvariants()
public static final void dispatchBox(DBox unusedBox)
unusedBox
- the not used DBox which is being recycled.public static final DBox newBox(int dimension)
dimension
- it specifies number of dimensions of a requested boxpublic static final DBox getAllocatedInstance(int dimension)
dimension
- the number of dimensionspublic static String poolStatus()
public boolean containsPoint(int[] pointCoordinates)
pointCoordinates
- it specifies the point coordinates.public DBox intersectWith(DBox other)
For efficiency reasons, the DBox returned is the static instance; if it needs to be stored, a copy has to be made using clone().
other
- the DBox to intersect this one withpublic DBox intersectWith(DBox other, int[] otherOffset)
For efficiency reasons, the DBox returned is the static instance; if it needs to be stored, a copy has to be made using clone().
other
- DBox with which the intersection is computed.otherOffset
- the offsetpublic DBox intersectWith(int[] offset, DBox other, int[] otherOffset)
For efficiency reasons, the DBox returned is the static instance; if it needs to be stored, a copy has to be made using clone().
offset
- the offset to apply to this box before intersectingother
- the DBox to intersect this one withotherOffset
- the offset to apply to the other DBox before intersectingpublic Collection<DBox> subtract(DBox hole, Collection<DBox> difference)
NOTE: the collection of DBoxes returned is not minimal (in some cases, some boxes can be merged)
if needed, implement a version that can take a lexical order as argument, to allow brute force search or learning of the best decomposition
hole
- the box to subtract this box withdifference
- the collection of boxes corresponding to the remaining areapublic static DBox boundingBox(Collection<DBox> boxes)
boxes
- collection of boxespublic static Collection<DBox> subtractAll(Collection<DBox> source, Collection<DBox> holes, Collection<DBox> result)
source
- the collection of boxes to subtract fromholes
- the boxes to subtract from the source boxesresult
- the collection to store the resulting boxes intopublic Collection<DBox> subtractAll(Collection<DBox> others, Collection<DBox> result)
others
- the boxes to subtract from this boxresult
- the collection to store the resulting boxes intopublic int area()
public final DBox copyInto(DBox box)
box
- the DBox to copy this DBox intoCopyright © 2022. All rights reserved.