The Java Program: Line.java
1
2
3 class Line {
4
5
6 final Point2D start, end;
7
8
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
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 }