Java Reference
In-Depth Information
10.4.3
Implementation
Class
Position
represents 2D Cartesian reference frames.
package
moro;
import
java.awt.geom.*;
public class
Position {
double
x, y, t; // the coordinates and direction of the
// reference frame
public
Position(
double
x,
double
y,
double
t) {
this
.x
#
x;
this
.y
#
y;
this
.t
#
t;
}
// executes the roto-translation of this reference frame
public void
rototrans(
double
da,
double
db,
double
dt) {
this
.x
!#
da * Math.cos(
this
.t) - db * Math.sin(
this
.t);
this
.y
!#
da * Math.sin(
this
.t)
!
db * Math.cos(
this
.t);
this
.t
!#
Math.toRadians(dt);
}
// executes the roto-translation of a point
public void
rototrans(Point2D point) {
double
px
#
point.getX() * Math.cos(t) -
point.getY() * Math.sin(t)
!
x;
double
py
#
point.getX() * Math.sin(t)
!
point.getY() * Math.cos(t)
!
y;
point
.setLocation(px, py);
}
// copies this position into the parameter
public void
copyTo(Position position) {
position.x
#
this
.x;
position.y
#
this
.y;
position.t
#
this
.t;
}
// the getX(), getY(), and getT() methods
}
Class
Device
is the abstract class that generalizes the robot's components.
It records the device's position and orientation with regard to the global
reference frame and the robot's reference frame. The geometric shape is
implemented using class
Polygon
of the Java AWT framework. It has a refer-
ence to the environment in order to give the device access to the obstacles
list.
package
moro;
import
java.awt.*;
import
java.awt.geom.Point2D;
public abstract class
Device {
String name; // the name of this device
Environment environment;
// a reference to the environment