Package microsim.space
Class DenseObjectSpace
- All Implemented Interfaces:
ObjectSpace
- Direct Known Subclasses:
MultiObjectSpace
A bi-dimensional grid containing one object per cell only.
-
Field Summary
Fields inherited from class microsim.space.AbstractSpace
modCount, xSize, ySize
-
Constructor Summary
ConstructorDescriptionDenseObjectSpace
(int xSize, int ySize) Creates an empty grid with the given size.DenseObjectSpace
(@NonNull AbstractSpace<Object> grid) Creates a copy of the given grid. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Adds an object implementingSpacePosition
interface to the grid.boolean
addGridPosition
(@Nullable SpacePosition position) Add an object implementingSpacePosition
interface to the grid.void
clear()
Set all cells to the null value.int
countObjectsAt
(int x, int y) Return the number of objects currently on the given position.@Nullable Object
get
(int x, int y) Returns the object stored at the given position.@NonNull Object[][]
Return the matrix of objects representing the grid.@NonNull Object[]
getMooreNeighbors
(int x, int y) Gets the Moore neighbors of the specified coordinate.@NonNull Object[]
getMooreNeighbors
(int x, int y, int xExtent, int yExtent) Gets the extended Moore neighbors of the specified coordinate.@NonNull Object[]
getVonNeumannNeighbors
(int x, int y) Gets the von Neumann neighbors of the specified coordinate.@NonNull Object[]
getVonNeumannNeighbors
(int x, int y, int xExtent, int yExtent) Gets the extended von Neumann neighbors of the specified coordinate.boolean
moveGridPosition
(@Nullable SpacePosition position, int destinationX, int destinationY) Move aSpacePosition
object from its current position to the specified destination, only if the destination cell is empty.boolean
removeGridPosition
(@Nullable SpacePosition position) Remove theSpacePosition
object from the grid.void
Put the given object at the given position.int
size()
Return the number of objects stored into the grid.void
swapPositions
(int x1, int y1, int x2, int y2) Swap the content of the(x1, y1)
and(x2, y2)
cells of the grid.Methods inherited from class microsim.space.AbstractSpace
boundX, boundY, equals, getMooreNeighborsPositions, getVonNeumannNeighborsPositions, reflectX, reflectY, torusX, torusY, toString
-
Field Details
-
m
-
objects
protected int objects
-
-
Constructor Details
-
DenseObjectSpace
Creates a copy of the given grid.- Parameters:
grid
- The source grid.
-
DenseObjectSpace
public DenseObjectSpace(int xSize, int ySize) Creates an empty grid with the given size.- Parameters:
xSize
- The width of the grid.ySize
- The height of the grid.
-
-
Method Details
-
get
Returns the object stored at the given position.- Specified by:
get
in interfaceObjectSpace
- Specified by:
get
in classAbstractSpace<Object>
- Parameters:
x
- The x coordinate.y
- The y coordinate.- Returns:
- The requested object.
-
add
Adds an object implementingSpacePosition
interface to the grid. If object implementsSpacePosition
it stored in the right position of the grid.- Parameters:
o
- TheSpacePosition
object to be added.- Returns:
- True if object was added. If
o
does not implementSpacePosition
interface it will not be added and method will return false.
-
swapPositions
public void swapPositions(int x1, int y1, int x2, int y2) Swap the content of the(x1, y1)
and(x2, y2)
cells of the grid.- Specified by:
swapPositions
in classAbstractSpace<Object>
- Parameters:
x1
- The x coordinate for the first cell.y1
- The y coordinate for the first cell.x2
- The x coordinate for the second cell.y2
- The y coordinate for the second cell.
-
set
Put the given object at the given position.- Specified by:
set
in interfaceObjectSpace
- Specified by:
set
in classAbstractSpace<Object>
- Parameters:
x
- Thex
coordinate.y
- They
coordinate.obj
- The object to be stored at the(x, y)
cell.
-
getMooreNeighbors
Gets the Moore neighbors of the specified coordinate. Objects are returned by row starting with the "NW corner" and ending with the "SE corner." The object at(x,y)
is not returned.- Parameters:
x
- Thex
coordinate of the objecty
- They
coordinate of the object- Returns:
- an array of objects ordered by row starting with the "NW corner" and ending with the "SE corner."
-
getMooreNeighbors
Gets the extended Moore neighbors of the specified coordinate. The extensions in thex
andy
directions are specified byxExtent
andyExtent
. Objects are returned by row starting with the "NW corner" and ending with the "SE corner." The object atx,y
is not returned.- Parameters:
x
- Thex
coordinate of the objecty
- They
coordinate of the objectxExtent
- The extension of the neighborhood in thex
directionyExtent
- The extension of the neighborhood in they
direction- Returns:
- an array of doubles ordered by row starting with the "NW corner" and ending with the "SE corner."
-
getVonNeumannNeighbors
Gets the von Neumann neighbors of the specified coordinate. Objects are returned in west, east, north, south order. The double atx,y
is not returned.- Parameters:
x
- Thex
coordinate of the object.y
- They
coordinate of the object.- Returns:
- an array of doubles in west, east, north, south order.
-
getVonNeumannNeighbors
Gets the extended von Neumann neighbors of the specified coordinate. The extensions in thex
andy
directions are specified byxExtent
andyExtent
. Objects are returned in west, east, north, south order with the most distant object first. The object atx,y
is not returned.- Parameters:
x
- The x coordinate of the object.y
- The y coordinate of the object.xExtent
- The extension of the neighborhood in the x direction.yExtent
- The extension of the neighborhood in the y direction.- Returns:
- an array of doubles in west, east, north, south order with the most distant object first.
-
moveGridPosition
public boolean moveGridPosition(@Nullable @Nullable SpacePosition position, int destinationX, int destinationY) Move aSpacePosition
object from its current position to the specified destination, only if the destination cell is empty.- Specified by:
moveGridPosition
in interfaceObjectSpace
- Parameters:
destinationX
- The x destination coordinate.destinationY
- The y destination coordinate.position
- An object implementingSpacePosition
interface.- Returns:
- true if object has been moved, false otherwise.
-
getMatrix
Return the matrix of objects representing the grid.- Returns:
- A matrix of
Object
with the same dimensions of the grid.
-
size
public int size()Return the number of objects stored into the grid.- Specified by:
size
in classAbstractSpace<Object>
- Returns:
- The sum of cells containing an object.
-
clear
public void clear()Set all cells to the null value.- Specified by:
clear
in classAbstractSpace<Object>
-
addGridPosition
Add an object implementingSpacePosition
interface to the grid. If the destination cell is already occupied the method return false and the object is not added.- Specified by:
addGridPosition
in interfaceObjectSpace
- Parameters:
position
- TheSpacePosition
object to be added.- Returns:
- True if object has been added. False if destination cell is already occupied or if argument object is null.
-
removeGridPosition
Remove theSpacePosition
object from the grid.- Specified by:
removeGridPosition
in interfaceObjectSpace
- Parameters:
position
- TheSpacePosition
object to be removed.- Returns:
- true if object has been removed. False if object is null or is not present on the grid.
-
countObjectsAt
public int countObjectsAt(int x, int y) Return the number of objects currently on the given position.- Specified by:
countObjectsAt
in interfaceObjectSpace
- Specified by:
countObjectsAt
in classAbstractSpace<Object>
- Parameters:
x
- The x coordinate.y
- The y coordinate.- Returns:
- the number of object in the cell(x,y). Must be only 0 or 1.
-