Class AbstractSpace<E>

java.lang.Object
microsim.space.AbstractSpace<E>
Direct Known Subclasses:
DenseObjectSpace, DoubleSpace, IntSpace, SparseObjectSpace

public abstract class AbstractSpace<E> extends Object
An abstract class representing bi-dimensional grid container. It extends the standard JDK AbstractCollection to let every implementation behave like a collection.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
     
    protected int
     
    protected int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractSpace(int xSize, int ySize)
    Creates a grid of given size.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    boundX(int x)
    Check the given x coordinate.
    int
    boundY(int y)
    Check the given y coordinate.
    abstract void
    Empty the content of the grid.
    abstract int
    countObjectsAt(int x, int y)
    Returns the number of objects allocated in cell (x,y).
    boolean
    equals(@NonNull Object o)
    Test if the passed object is equal.
    abstract E
    get(int x, int y)
    Return the object contained at a given position.
    @NonNull SpacePosition[]
    Gets the extended Moore neighbors of the specified coordinate.
    @NonNull SpacePosition[]
    Gets the extended von Neumann neighbors of the specified coordinate.
    int
    reflectX(int x)
    Check the given x coordinate considering the grid as a walled space.
    int
    reflectY(int y)
    Check the given y coordinate considering the grid as a walled space.
    abstract void
    set(int x, int y, @NonNull Object obj)
    Store an object at a given position.
    abstract int
    Return the total size of the grid, i.e., width * height.
    abstract void
    swapPositions(int x1, int y1, int x2, int y2)
    Swap the content of the (x1, y1) and (x2, y2) cells of the grid.
    int
    torusX(int x)
    Check the given x coordinate considering the grid as a toroid.
    int
    torusY(int y)
    Check the given y coordinate considering the grid as a toroid.
    @NonNull String
    Return a string representing the content of the grid.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • xSize

      protected int xSize
    • ySize

      protected int ySize
    • modCount

      protected transient int modCount
  • Constructor Details

    • AbstractSpace

      public AbstractSpace(int xSize, int ySize)
      Creates a grid of given size.
      Parameters:
      xSize - The width of the grid.
      ySize - The height of the grid.
  • Method Details

    • get

      public abstract E get(int x, int y)
      Return the object contained at a given position. The type depends on the specific implementation of the Grid.
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      Returns:
      a generic object.
    • set

      public abstract void set(int x, int y, @NonNull @NonNull Object obj)
      Store an object at a given position.
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      obj - The object to be stored.
    • swapPositions

      public abstract void swapPositions(int x1, int y1, int x2, int y2)
      Swap the content of the (x1, y1) and (x2, y2) cells of the grid.
      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.
    • boundX

      public int boundX(int x)
      Check the given x coordinate. If it is out of grid bounds the returning value is truncated to stay within the borders. For instance, if the grid is (100, 100) the instruction boundX(130) returns 99.
      Parameters:
      x - The x coordinate to be tested.
      Returns:
      A safe value representing the x value if inbound, the bound otherwise.
    • boundY

      public int boundY(int y)
      Check the given y coordinate. If it is out of grid bounds the returning value is truncated to stay within the borders. For instance, if the grid is (100, 100) the instruction boundY(130) returns 99.
      Parameters:
      y - The y coordinate to be tested.
      Returns:
      A safe value representing the y value if inbound, the bound otherwise.
    • getMooreNeighborsPositions

      @NonNull public @NonNull SpacePosition[] getMooreNeighborsPositions(int x, int y)
      Gets the extended Moore neighbors of the specified coordinate. Points are returned by row starting with the "NW corner" and ending with the "SE corner." The point at x,y is not returned.
      Parameters:
      x - The x coordinate of the object.
      y - The y coordinate of the object.
      Returns:
      an array of points ordered by row starting with the "NW corner" and ending with the "SE corner."
    • getVonNeumannNeighborsPositions

      @NonNull public @NonNull SpacePosition[] getVonNeumannNeighborsPositions(int x, int y)
      Gets the extended von Neumann neighbors of the specified coordinate. Points are returned in west, east, north, south order with the most distant object first. The point at x,y is not returned.
      Parameters:
      x - The x coordinate of the object
      y - The y coordinate of the object
      Returns:
      an array of points in west, east, north, south order with the most distant object first.
    • countObjectsAt

      public abstract int countObjectsAt(int x, int y)
      Returns the number of objects allocated in cell (x,y).
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      Returns:
      the number of "entities" contained in the specified cell.
    • torusX

      public int torusX(int x)
      Check the given x coordinate considering the grid as a toroid. If x is out of grid bounds the returning coordinate is computed starting from the opposite bound. For instance, if the grid is (100, 100) the instruction torusX(130) returns 30, because over 100 the counter starts again from 0.
      Parameters:
      x - The x coordinate to be tested.
      Returns:
      A safe value representing the x value on the toroid.
    • torusY

      public int torusY(int y)
      Check the given y coordinate considering the grid as a toroid. If y is out of grid bounds the returning coordinate is computed starting from the opposite bound. For instance, if the grid is (100, 100) the instruction torusY(150) returns 50, because over 100 the counter starts again from 0.
      Parameters:
      y - The y coordinate to be tested.
      Returns:
      A safe value representing the y value on the toroid.
    • reflectX

      public int reflectX(int x)
      Check the given x coordinate considering the grid as a walled space. If x goes out of grid bounds the returning coordinate is computed mirroring the path in front of the bound. For instance, if the grid is (100, 100) the instruction reflectX(130) returns 70, because over 100 the path bounce on the wall and comes back.
      Parameters:
      x - The x coordinate to be tested.
      Returns:
      A safe value representing the x value on the walled grid.
    • reflectY

      public int reflectY(int y)
      Check the given y coordinate considering the grid as a walled space. If y goes out of grid bounds the returning coordinate is computed mirroring the path in front of the bound. For instance, if the grid is (100, 100) the instruction reflectY(140) returns 60, because over 100 the path bounce on the wall and comes back.
      Parameters:
      y - The y coordinate to be tested.
      Returns:
      A safe value representing the y value on the walled grid.
    • size

      public abstract int size()
      Return the total size of the grid, i.e., width * height.
      Returns:
      The number of cells in the grid.
    • clear

      public abstract void clear()
      Empty the content of the grid.
    • equals

      public boolean equals(@NonNull @NonNull Object o)
      Test if the passed object is equal. The comparison is made at pointer level.
      Overrides:
      equals in class Object
      Parameters:
      o - The object to be compared.
      Returns:
      true if objects are the same, false otherwise.
      Implementation Note:
      If grids contains exactly the same values they are not equals. Only the same implementation of the grid equals to itself.
    • toString

      @NonNull public @NonNull String toString()
      Return a string representing the content of the grid.
      Overrides:
      toString in class Object
      Returns:
      The string representation of the grid like [elem1, elem2, .. ].