sk.robotics.rlcs.data
Class Collision

java.lang.Object
  extended by sk.robotics.rlcs.data.Collision
All Implemented Interfaces:
com.microstepmis.xplatform.CustomXmlMappable

public class Collision
extends java.lang.Object
implements com.microstepmis.xplatform.CustomXmlMappable

Collision object for given robot holds lists of nearby walls and robots, and has a method to check for collision in arbitrary directions. Collision objects are immutable.


Nested Class Summary
static class Collision.CheckResult
          Object to be returned by checkMove().
static class Collision.Wall
           
 class Collision.XmlMappable
           
 
Field Summary
static Collision ALL
          Special "collision in all directions" object.
 
Constructor Summary
Collision(Position actualPos, java.util.Collection<java.awt.geom.Line2D> walls, java.util.Collection<Position> robots)
           
 
Method Summary
 Collision.CheckResult check(Movement.Direction direction, double border)
          Determine whether a movement would cause a collision.
 Collision.CheckResult check(Movement move, double border)
          Determine whether a movement would cause a collision.
 Collision.CheckResult checkMove(double direction, double border)
          Determine distance of closest obstacle in given direction.
 Collision.CheckResult checkMoveRel(double direction, double border)
          Similar like checkMove(), but takes relative direction, instead of absolute.
 double checkTurn(int direction)
          Determine allowed angle to turn without collision.
 Position getActualPos()
           
 Collision.XmlMappable getXmlMappable()
           
 Collision.Wall line2wall(java.awt.geom.Line2D line)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ALL

public static final Collision ALL
Special "collision in all directions" object.

Constructor Detail

Collision

public Collision(Position actualPos,
                 java.util.Collection<java.awt.geom.Line2D> walls,
                 java.util.Collection<Position> robots)
Method Detail

getActualPos

public Position getActualPos()
Returns:
Actual position associated with this Collision object

checkMove

public Collision.CheckResult checkMove(double direction,
                                       double border)
Determine distance of closest obstacle in given direction.

Parameters:
direction - Direction to check for collision in, in radians.
Returns:
Distance of closest obstacle in that direction, in millimeters. If there is no obstacle, Double.MAX_VALUE is returned.

checkMoveRel

public Collision.CheckResult checkMoveRel(double direction,
                                          double border)
Similar like checkMove(), but takes relative direction, instead of absolute.


checkTurn

public double checkTurn(int direction)
Determine allowed angle to turn without collision.

Parameters:
direction - Turning direction, positive for CW, negative for CCW.
Returns:
Allowed turning angle, or Double.MAX_VALUE if there is no obstacle.

check

public Collision.CheckResult check(Movement.Direction direction,
                                   double border)
Determine whether a movement would cause a collision.

Parameters:
direction - Movement direction: FD/BK/LT/RT.
border - Turtle border, included in collision computation.

check

public Collision.CheckResult check(Movement move,
                                   double border)
Determine whether a movement would cause a collision.

Parameters:
move - Movement command.
border - Turtle border, included in collision computation.

line2wall

public Collision.Wall line2wall(java.awt.geom.Line2D line)

getXmlMappable

public Collision.XmlMappable getXmlMappable()
Specified by:
getXmlMappable in interface com.microstepmis.xplatform.CustomXmlMappable