Java Reference
In-Depth Information
Note that we have added the
getX()
,
getY()
,
setX()
and
setY()
methods to the class to make the
private
data members accessible.
The
Line
class also needs to be amended to make the methods public and to declare the class as
public. We also need to change its
intersects()
method so that it can access the private data
members of
Point
objects using the
set...()
and
get...()
methods in the
Point
class. The code
in
Line.java
, with changes highlighted, will be:
package Geometry;
public class Line {
// Create a line from two points
public Line(final Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
}
// Create a line from two coordinate pairs
public Line(double xStart, double yStart, double xEnd, double yEnd) {
start = new Point(xStart, yStart); // Create the start point
end = new Point(xEnd, yEnd); // Create the end point
}
// Calculate the length of a line
public double length() {
return start.distance(end); // Use the method from the Point class
}
// Return a point as the intersection of two lines -- called from a Line object
public Point intersects(final Line line1) {
Point localPoint = new Point(0, 0);
double num =(this.end.getY() - this.start.getY())
* (this.start.getX()-line1.start.getX())
- (this.end.getX() - this.start.getX())
* (this.start.getY() - line1.start.getY());
double denom = (this.end.getY() - this.start.getY())
* (line1.end.getX() - line1.start.getX())
- (this.end.getX() - this.start.getX())
* (line1.end.getY() - line1.start.getY());
localPoint.setX(line1.start.getX() + (line1.end.getX() -
line1.start.getX())*num/denom);
localPoint.setY(line1.start.getY() + (line1.end.getY() -
line1.start.getY())*num/denom);
return localPoint;
}
// Convert a line to a string
public String toString() {
return "(" + start+ "):(" + end + ")"; // As "(start):(end)"
} // that is, "(x1, y1):(x2, y2)"
// Data members