Friday, March 22, 2013

Distance between point and the line


Hei, I got Challenge to my email and I thought - why not :)

Distance:
In 2D coordinate system we have three points A(x,y) B(x,y) C(x,y)
where x,y can be positive and negative integer numbers
If Points A and B define endless line, write function which returns the 
distance between point C and the line defined by point A, B
 
I havn't thought it will be so easy:

public class DistanceCalculator {
    public static double distanceBetweenPoints(Point p1, Point p2){
        int dx = p1.x - p2.x;
        int dy = p1.y - p2.y;
        return Math.sqrt(dx*dx + dy*dy);
    }
    public static double distanceBetweenLineAndPoints(Point a, Point b, Point c){
        //lets find area of triangle
        double ab = distanceBetweenPoints(a, b);
        double bc = distanceBetweenPoints(b, c);
        double ca = distanceBetweenPoints(c, a);
        double p = (ab + bc + ca)/2;

        double area = Math.sqrt(p*(p-ab)*(p-bc)*(p-ca));

        return (area*2)/ab;
    }
}
public class Point {
    public int x;
    public int y;

    public Point (int x, int y){
        this.x = x;
        this.y = y;
    }
}
If you like it - there is also Part2.

No comments:

Post a Comment