Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.field.grid
Class AbstractGrid2D

    java.lang.Object
      sim.field.grid.AbstractGrid2D

All Implemented Interfaces:
  java.io.Serializable, Grid2D

Direct Known Subclasses:
  DoubleGrid2D, IntGrid2D, ObjectGrid2D

    public abstract class AbstractGrid2D

extends java.lang.Object
implements Grid2D

A concrete implementation of the Grid2D methods; used by several subclasses. Note that you should avoid calling these methods from an object of type Grid2D; instead try to call them from something more concrete (AbstractGrid2D or SparseGrid2D). Otherwise they will not get inlined. For example,

       Grid2D foo = ... ;
       foo.tx(4);  // will not get inlined

       AbstractGrid2D bar = ...;
       bar.tx(4);  // WILL get inlined

See Also:
  Serialized Form

Field Summary
`protected int` | `height`
`protected int` | `width`

Constructor Summary
`AbstractGrid2D()`

Method Summary
`int` | `dlx(int x, int y)` Hex downleft x.
`int` | `dly(int x, int y)` Hex downleft y.
`int` | `downx(int x, int y)` Hex down x.
`int` | `downy(int x, int y)` Hex down y.
`int` | `drx(int x, int y)` Hex downright x.
`int` | `dry(int x, int y)` Hex downright y.
`int` | `getHeight()` Returns the width of the field.
`void` | `getNeighborsHamiltonianDistance(int x, int y, int dist, boolean toroidal, IntBag xPos, IntBag yPos)` Gets all neighbors of a location that satisfy abs(x-X) + abs(y-Y) <= dist.
`void` | `getNeighborsHexagonalDistance(int x, int y, int dist, boolean toroidal, IntBag xPos, IntBag yPos)` Gets all neighbors located within the hexagon centered at (X,Y) and 2*dist+1 cells from point to opposite point inclusive.
`void` | `getNeighborsMaxDistance(int x, int y, int dist, boolean toroidal, IntBag xPos, IntBag yPos)` Gets all neighbors of a location that satisfy max( abs(x-X) , abs(y-Y) ) <= dist.
`int` | `getWidth()` Returns the width of the field.
`int` | `stx(int x)` Simple [and fast] toroidal x.
`int` | `sty(int y)` Simple [and fast] toroidal y.
`boolean` | `trb(int x, int y)` Horizontal edge is on the bottom for triangle.
`boolean` | `trt(int x, int y)` Horizontal edge is on the top for triangle.
`int` | `tx(int x)` Toroidal x.
`int` | `ty(int y)` Toroidal y.
`int` | `ulx(int x, int y)` Hex upleft x.
`int` | `uly(int x, int y)` Hex upleft y.
`int` | `upx(int x, int y)` Hex up x.
`int` | `upy(int x, int y)` Hex up y.
`int` | `urx(int x, int y)` Hex upright x.
`int` | `ury(int x, int y)` Hex upright y.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### width

    protected int width

### height

    protected int height

Constructor Detail

### AbstractGrid2D

    public AbstractGrid2D()

Method Detail

### getWidth

    public final int getWidth()

  Description copied from interface: `Grid2D`
  Returns the width of the field.

  Specified by:
    `getWidth` in interface `Grid2D`

### getHeight

    public final int getHeight()

  Description copied from interface: `Grid2D`
  Returns the width of the field.

  Specified by:
    `getHeight` in interface `Grid2D`

### tx

    public final int tx(int x)

  Description copied from interface: `Grid2D`
  Toroidal x. The following definition:
  final int length = this.length;
  if (z >= 0) return (z % length);
  final int length2 = (z % length) + length;
  if (length2 < length) return length2;
  return 0;
  ... produces the correct code and is 27 bytes, so it's likely to be inlined in Hotspot for 1.4.1.

  Specified by:
    `tx` in interface `Grid2D`

### ty

    public final int ty(int y)

  Description copied from interface: `Grid2D`
  Toroidal y. The following definition:
  final int length = this.length;
  if (z >= 0) return (z % length);
  final int length2 = (z % length) + length;
  if (length2 < length) return length2;
  return 0;
  ... produces the correct code and is 27 bytes, so it's likely to be inlined in Hotspot for 1.4.1.

  Specified by:
    `ty` in interface `Grid2D`

### stx

    public final int stx(int x)

  Description copied from interface: `Grid2D`
  Simple [and fast] toroidal x. Use this if the values you'd pass in never stray beyond (-width ... width * 2) not inclusive. It's a bit faster than the full toroidal computation as it uses if statements rather than two modulos. The following definition:
  { int width = this.width; if (x >= 0) { if (x < width) return x; return x - width; } return x + width; } ...produces the shortest code (24 bytes) and is inlined in Hotspot for 1.4.1. However in most cases removing the int width = this.width; is likely to be a little faster if most objects are usually within the toroidal region.

  Specified by:
    `stx` in interface `Grid2D`

### sty

    public final int sty(int y)

  Description copied from interface: `Grid2D`
  Simple [and fast] toroidal y. Use this if the values you'd pass in never stray beyond (-height ... height * 2) not inclusive. It's a bit faster than the full toroidal computation as it uses if statements rather than two modulos. The following definition:
  { int height = this.height; if (y >= 0) { if (y < height) return y ; return y - height; } return y + height; } ...produces the shortest code (24 bytes) and is inlined in Hotspot for 1.4.1. However in most cases removing the int height = this.height; is likely to be a little faster if most objects are usually within the toroidal region.

  Specified by:
    `sty` in interface `Grid2D`

### ulx

    public final int ulx(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex upleft x.

  Specified by:
    `ulx` in interface `Grid2D`

### uly

    public final int uly(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex upleft y.

  Specified by:
    `uly` in interface `Grid2D`

### urx

    public final int urx(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex upright x.

  Specified by:
    `urx` in interface `Grid2D`

### ury

    public final int ury(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex upright y.

  Specified by:
    `ury` in interface `Grid2D`

### dlx

    public final int dlx(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex downleft x.

  Specified by:
    `dlx` in interface `Grid2D`

### dly

    public final int dly(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex downleft y.

  Specified by:
    `dly` in interface `Grid2D`

### drx

    public final int drx(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex downright x.

  Specified by:
    `drx` in interface `Grid2D`

### dry

    public final int dry(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex downright y.

  Specified by:
    `dry` in interface `Grid2D`

### upx

    public final int upx(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex up x.

  Specified by:
    `upx` in interface `Grid2D`

### upy

    public final int upy(int x,
                         int y)

  Description copied from interface: `Grid2D`
  Hex up y.

  Specified by:
    `upy` in interface `Grid2D`

### downx

    public final int downx(int x,
                           int y)

  Description copied from interface: `Grid2D`
  Hex down x.

  Specified by:
    `downx` in interface `Grid2D`

### downy

    public final int downy(int x,
                           int y)

  Description copied from interface: `Grid2D`
  Hex down y.

  Specified by:
    `downy` in interface `Grid2D`

### trb

    public boolean trb(int x,
                       int y)

  Description copied from interface: `Grid2D`
  Horizontal edge is on the bottom for triangle. True if x + y is odd. One definition of this is `return ((x + y) & 1) == 1;`

  Specified by:
    `trb` in interface `Grid2D`

### trt

    public boolean trt(int x,
                       int y)

  Description copied from interface: `Grid2D`
  Horizontal edge is on the top for triangle. True if x + y is even. One definition of this is `return ((x + y) & 1) == 0;`

  Specified by:
    `trt` in interface `Grid2D`

### getNeighborsMaxDistance

    public void getNeighborsMaxDistance(int x,
                                        int y,
                                        int dist,
                                        boolean toroidal,
                                        IntBag xPos,
                                        IntBag yPos)

  Description copied from interface: `Grid2D`
  Gets all neighbors of a location that satisfy max( abs(x-X) , abs(y-Y) ) <= dist. This region forms a square 2*dist+1 cells across, centered at (X,Y). If dist==1, this is equivalent to the so-called "Moore Neighborhood" (the eight neighbors surrounding (X,Y)), plus (X,Y) itself. Places each x and y value of these locations in the provided IntBags xPos and yPos, clearing the bags first.

  Specified by:
    `getNeighborsMaxDistance` in interface `Grid2D`

### getNeighborsHamiltonianDistance

    public void getNeighborsHamiltonianDistance(int x,
                                                int y,
                                                int dist,
                                                boolean toroidal,
                                                IntBag xPos,
                                                IntBag yPos)

  Description copied from interface: `Grid2D`
  Gets all neighbors of a location that satisfy abs(x-X) + abs(y-Y) <= dist. This region forms a diamond 2*dist+1 cells from point to opposite point inclusive, centered at (X,Y). If dist==1 this is equivalent to the so-called "Von-Neumann Neighborhood" (the four neighbors above, below, left, and right of (X,Y)), plus (X,Y) itself. Places each x and y value of these locations in the provided IntBags xPos and yPos, clearing the bags first.

  Specified by:
    `getNeighborsHamiltonianDistance` in interface `Grid2D`

### getNeighborsHexagonalDistance

    public void getNeighborsHexagonalDistance(int x,
                                              int y,
                                              int dist,
                                              boolean toroidal,
                                              IntBag xPos,
                                              IntBag yPos)

  Description copied from interface: `Grid2D`
  Gets all neighbors located within the hexagon centered at (X,Y) and 2*dist+1 cells from point to opposite point inclusive. If dist==1, this is equivalent to the six neighbors immediately surrounding (X,Y), plus (X,Y) itself. Places each x and y value of these locations in the provided IntBags xPos and yPos, clearing the bags first.

  Specified by:
    `getNeighborsHexagonalDistance` in interface `Grid2D`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD