jist.swans.field
Class Spatial

java.lang.Object
  extended by jist.swans.field.Spatial
Direct Known Subclasses:
Spatial.Grid, Spatial.HierGrid, Spatial.LinearList, Spatial.TiledWraparound

public abstract class Spatial
extends java.lang.Object

Root of all spatial data structures.

Since:
SWANS1.0
Version:
$Id: Spatial.java,v 1.25 2004/04/06 16:07:47 barr Exp $
Author:
Rimon Barr <barr+jist@cs.cornell.edu>

Nested Class Summary
static class Spatial.Grid
          Grid-based binning.
static class Spatial.HierGrid
          Hierarchical binning.
static class Spatial.LinearList
          Linear-lookup (no binning).
static interface Spatial.SpatialTransmitVisitor
          Transmission visitor object.
static interface Spatial.SpatialVisitor
          General radio visitor object.
static class Spatial.TiledWraparound
          Tile wraparound spatial implementation.
 
Field Summary
protected  Location.Location2D bl
          Spatial data structure endpoints.
protected  Location.Location2D br
          Spatial data structure endpoints.
protected  int size
          Number of nodes in data structure.
protected  Location.Location2D tl
          Spatial data structure endpoints.
protected  Location.Location2D tr
          Spatial data structure endpoints.
 
Constructor Summary
Spatial(Location tr)
          Create new (abstract) bin.
Spatial(Location bl, Location tr)
          Create new (abstract) bin.
Spatial(Location bl, Location br, Location tl, Location tr)
          Create new (abstract) bin.
 
Method Summary
abstract  void add(Field.RadioData radioData)
          Add a radio to bin.
 double area()
          Compute area of bin.
abstract  void del(Field.RadioData radioData)
          Delete a radio from bin.
 Location getBottomLeft()
          Return bottom-left coordinate.
 Location getNearest(Location src)
          Get nearest corner to location.
 int getSize()
          Return number of radios in bin.
 Location getTopRight()
          Return top-right coordinate.
abstract  Field.RadioData move(Field.RadioData radioData, Location newLoc)
          Update a radio location.
 void moveInside(Field.RadioData rd, Location newLoc)
          Update a radio location, but new location is still within same bin.
abstract  int visit(Spatial.SpatialVisitor visitor)
          Visit radios in bin.
abstract  int visitTransmit(Spatial.SpatialTransmitVisitor visitor, RadioInfo srcInfo, Location srcLoc, Message msg, java.lang.Long durationObj, double limit)
          Visit radios in bin with transmission visitor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bl

protected Location.Location2D bl
Spatial data structure endpoints.


br

protected Location.Location2D br
Spatial data structure endpoints.


tl

protected Location.Location2D tl
Spatial data structure endpoints.


tr

protected Location.Location2D tr
Spatial data structure endpoints.


size

protected int size
Number of nodes in data structure.

Constructor Detail

Spatial

public Spatial(Location tr)
Create new (abstract) bin.

Parameters:
tr - top-right corner location

Spatial

public Spatial(Location bl,
               Location tr)
Create new (abstract) bin.

Parameters:
bl - bottom-left corner location
tr - top-right corner location

Spatial

public Spatial(Location bl,
               Location br,
               Location tl,
               Location tr)
Create new (abstract) bin.

Parameters:
bl - bottom-left corner location
br - bottom-right corner location
tl - top-left corner location
tr - top-right corner location
Method Detail

visitTransmit

public abstract int visitTransmit(Spatial.SpatialTransmitVisitor visitor,
                                  RadioInfo srcInfo,
                                  Location srcLoc,
                                  Message msg,
                                  java.lang.Long durationObj,
                                  double limit)
Visit radios in bin with transmission visitor.

Parameters:
visitor - transmission visitor object
srcInfo - transmission source radio
srcLoc - transmission source location
msg - message to transmit
durationObj - transmission duration
limit - propagation limit
Returns:
number of receiving radios

visit

public abstract int visit(Spatial.SpatialVisitor visitor)
Visit radios in bin.

Parameters:
visitor - visitor object
Returns:
number of radios visited

add

public abstract void add(Field.RadioData radioData)
Add a radio to bin.

Parameters:
radioData - radio information (location inside bin limits)

del

public abstract void del(Field.RadioData radioData)
Delete a radio from bin.

Parameters:
radioData - radio information (location inside bin limits)

move

public abstract Field.RadioData move(Field.RadioData radioData,
                                     Location newLoc)
Update a radio location.

Parameters:
radioData - radio information
newLoc - destination of move
Returns:
radio information (unupdated) if new location outside of bin; null if new location inside bin

moveInside

public void moveInside(Field.RadioData rd,
                       Location newLoc)
Update a radio location, but new location is still within same bin.

Parameters:
rd - radio information
newLoc - destination of move (must be within bin)

getNearest

public Location getNearest(Location src)
Get nearest corner to location.

Parameters:
src - location outside bin
Returns:
location of nearest corner to given location

getSize

public int getSize()
Return number of radios in bin.

Returns:
number of radios in bin

area

public double area()
Compute area of bin.

Returns:
bin area

getTopRight

public Location getTopRight()
Return top-right coordinate.

Returns:
top-right coordinate

getBottomLeft

public Location getBottomLeft()
Return bottom-left coordinate.

Returns:
bottom-left coordinate