Line2D.java
package org.drip.zen.geometry;
/*
* 1) Slope Intercept Form
* 2) Construction from slope and intercept
* 3) Construction from 2 Points
* 4) Construction From Slope and Point
* 5) Accessors
* 6) Y from X
* 7) X From Y
* 8) Parallel Line
* 9) Perpendicular Line
* 10) Intersection Between Lines
*/
public class Line2D {
private double _m = 0.;
private double _b = 0.;
public Line2D (double m, double b)
{
_m = m;
_b = b;
}
public Line2D (Point2D p1, Point2D p2)
{
double x1 = p1.getX();
double x2 = p2.getX();
double y1 = p1.getY();
double y2 = p2.getY();
_m = (y2 - y1) / (x2 - x1);
_b = y2 - _m * x2;
}
public Line2D (double m, Point2D p2)
{
double x2 = p2.getX();
double y2 = p2.getY();
_m = m;
_b = y2 - _m * x2;
}
public double slope()
{
return _m;
}
public double yIntercept()
{
return _b;
}
public void show()
{
System.out.println ("Slope: " + _m + "; Intercept: " + _b);
}
public double YFromX (double x)
{
double y = _m * x + _b;
return y;
}
public double XFromY (double y)
{
double x = (y - _b) / _m;
return x;
}
public Line2D parallelLineAtPoint (Point2D p)
{
Line2D parallelLine = new Line2D (_m, p);
return parallelLine;
}
public Line2D perpendicularLineAtPoint (Point2D p)
{
Line2D perpendicularLine = new Line2D (-1 / _m, p);
return perpendicularLine;
}
public Point2D intersection (Line2D lineOther)
{
double b1 = yIntercept();
double b2 = lineOther.yIntercept();
double m1 = slope();
double m2 = lineOther.slope();
double xIntersection = -1 * (b2 - b1) / (m2 - m1);
double yIntersection = m1 * xIntersection + b1;
Point2D pointIntersection = new Point2D (xIntersection, yIntersection);
return pointIntersection;
}
public static void main (String[] args)
{
double mySlope = 1;
double myIntercept = 2;
Line2D myFirstLine = new Line2D (mySlope, myIntercept);
myFirstLine.show();
Point2D point1 = new Point2D (1, 3);
Point2D point2 = new Point2D (4, 6);
Line2D mySecondLine = new Line2D (point1, point2);
mySecondLine.show();
Line2D myThirdLine = new Line2D (mySlope, point2);
myThirdLine.show();
double x1 = 1;
double y1 = myThirdLine.YFromX (x1);
System.out.println ("Y From = " + x1 + " is " + y1);
double y2 = 1;
double x2 = myThirdLine.XFromY (y2);
System.out.println ("X From Y = " + y2 + " is " + x2);
Point2D linePoint = new Point2D (6, 12);
Line2D parallelLine = myThirdLine.parallelLineAtPoint (linePoint);
parallelLine.show();
Line2D perpendicularLine = myThirdLine.parallelLineAtPoint (linePoint);
perpendicularLine.show();
Line2D firstLine = new Line2D (new Point2D (0, 0), new Point2D (1, 1));
Line2D secondLine = new Line2D (new Point2D (1, 1), new Point2D (2, 0));
Point2D pIntersect = firstLine.intersection (secondLine);
pIntersect.printCoordinate();
}
}