jas.space
Class Grid

java.lang.Object
  extended by java.util.AbstractCollection
      extended by jas.space.Grid
All Implemented Interfaces:
java.lang.Iterable, java.util.Collection
Direct Known Subclasses:
DblGrid, IntGrid, ObjGrid, ObjVirtualGrid

public abstract class Grid
extends java.util.AbstractCollection

An abstract class representing bidimensional grid container. The different implementations of this class will manage the type of the storable values. It extends the standard jdk java.util.AbstractCollection to give each grid implementation a collection behaviour. So each grid can be iterated like an ArrayList. The specific GridIterator has been implemented to iterate elements storing their position on the grid.

Title: JAS

Description: Java Agent-based Simulation library

Copyright (C) 2002 Michele Sonnessa

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

Author:
Michele Sonnessa


Constructor Summary
Grid(int xSize, int ySize)
          Create a grid of given size.
 
Method Summary
 int boundX(int x)
          Check the given x coordinate.
 int boundY(int y)
          Check the given y coordinate.
abstract  void clear()
          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(java.lang.Object o)
          Test if the passed object is equal.
abstract  java.lang.Object get(int x, int y)
          Return the object contained at given position.
 java.awt.Point[] getMooreNeighborsPositions(int x, int y)
          Gets the extended Moore neighbors of the specified coordinate.
 java.awt.Point[] getVonNeumannNeighborsPositions(int x, int y)
          Gets the extended von Neumann neighbors of the specified coordinate.
 int getXSize()
          Return the width of the grid.
 int getYSize()
          Return the height of the grid.
 GridIterator gridIterator()
          Return a GridIterator storing the position of the read value.
 java.util.Iterator iterator()
          Return a java standard interator for elements in the grid.
 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, java.lang.Object obj)
          Set the given Object at given position.
abstract  int size()
          Return the size of the grid.
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.
 java.lang.String toString()
          Return a string representing the content of the grid.
 
Methods inherited from class java.util.AbstractCollection
add, addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Collection
hashCode
 

Constructor Detail

Grid

public Grid(int xSize,
            int ySize)
Create a grid of given size.

Parameters:
xSize - The width of the grid.
ySize - The height of the grid.
Method Detail

boundX

public int boundX(int x)
Check the given x coordinate. If it is out of grid bounds the returning value is truncated to the bound. For instance, if the grid is (100, 100) the instruction boundX(130) returns 100.

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 the bound. For instance, if the grid is (100, 100) the instruction boundY(150) returns 100.

Parameters:
y - The y coordinate to be tested.
Returns:
A safe value representing the y value if inbound, the bound itself otherwise.

clear

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

Specified by:
clear in interface java.util.Collection
Overrides:
clear in class java.util.AbstractCollection

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.

equals

public boolean equals(java.lang.Object o)
Test if the passed object is equal. The comparison is made at pointer level. WARNING If grids contains exactly the same values they are not equals. Only the same implementation of the grid is considered equals to itself.

Specified by:
equals in interface java.util.Collection
Overrides:
equals in class java.lang.Object
Parameters:
o - The object to be compared.
Returns:
True if objects are the same, false otherwise.

get

public abstract java.lang.Object get(int x,
                                     int y)
Return the object contained at given position. The type depends on the specific implementation of the Grid.

Parameters:
x - The x coordinate. WARNING: No bounds checking for fast access.
y - The y coordinate. WARNING: No bounds checking for fast access.
Returns:
The Double wrapper for value stored at x,y position of the grid.

getMooreNeighborsPositions

public java.awt.Point[] 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 Point ordered by row starting with the "NW corner" and ending with the "SE corner."

getVonNeumannNeighborsPositions

public java.awt.Point[] 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 Point in west, east, north, south order with the most distant object first.

getXSize

public int getXSize()
Return the width of the grid.

Returns:
The width.

getYSize

public int getYSize()
Return the height of the grid.

Returns:
The height.

gridIterator

public GridIterator gridIterator()
Return a GridIterator storing the position of the read value.

Returns:
A GridIterator that scrolls grid from the top-left corner to the bottom-right, reading each line from left to right. It remember the position of the last read value.

iterator

public java.util.Iterator iterator()
Return a java standard interator for elements in the grid.

Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in class java.util.AbstractCollection
Returns:
A iterator that scrolls grid from the top-left corner to the bottom-right, reading each line from left to right.

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.

set

public abstract void set(int x,
                         int y,
                         java.lang.Object obj)
Set the given Object at given position.

Parameters:
x - The x coordinate. WARNING: No bounds checking for fast access.
y - The y coordinate. WARNING: No bounds checking for fast access.
obj - An object to be stored. The type depends on the specific implementation of the Grid.

size

public abstract int size()
Return the size of the grid. It is width * height.

Specified by:
size in interface java.util.Collection
Specified by:
size in class java.util.AbstractCollection
Returns:
The number of cells in the grid.

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.

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.

toString

public java.lang.String toString()
Return a string representing the content of the grid.

Overrides:
toString in class java.util.AbstractCollection
Returns:
The string representation of the grid like [elem1, elem2, .. ].