The Java Program: Line.java

  1 // Line.java
  2 
  3 class Line {
  4 
  5    // instance variables
  6    final Point2D start, end;
  7 
  8    // constructors
  9    Line (Point2D s, Point2D e) { start=s; end=e; }
 10    Line (double startX, double startY, double endX, double endY) {
 11       this (new Point2D (startX, startY), new Point2D (endX, endY));
 12    }
 13    Line (Point2D c)            { this (new Point2D (0.0, 0.0), c); }
 14 
 15    // methods
 16    double length () { return start.distance (end); }
 17 
 18    Point2D intersects (final Line l) {
 19       final double den = (end.y-start.y)*(l.end.x-l.start.x)-
 20          (end.x-start.x)*(l.end.y - l.start.y);
 21       if (Math.abs(den) < 1.0E-10) throw new RuntimeException ("parallel lines");
 22       final double num = (end.y-start.y)*(start.x-l.start.x)-
 23          (end.x-start.x)*(start.y - l.start.y);
 24       final double iX = l.start.x + (l.end.x - l.start.x) * num / den;
 25       final double iY = l.start.y + (l.end.y - l.start.y) * num / den;
 26       return new Point2D (iX, iY);
 27    }
 28 
 29 }