package math; public class Intersect { public static boolean intersect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) { if(x1==x3 && y1==y3) return false; if(x1==x4 && y1==y4) return false; if(x2==x3 && y2==y3) return false; if(x2==x4 && y2==y4) return false; double dx2, dy2, dx3, dy3; dx2 = x2 - x1; dy2 = y2 - y1; dx3 = x4 - x3; dy3 = y4 - y3; double s, t; s = (-dy2 * (x1 - x3) + dx2 * (y1 - y3)) / (-dx3 * dy2 + dx2 * dy3); t = (dx3 * (y1 - y3) - dy3 * (x1 - x3)) / (-dx3 * dy2 + dx2 * dy3); if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { return true; } return false; } public double [] pointIntersect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) { double [] point = new double[2]; point [0] = ((x3 * y4 - x4 * y3) * (x1 - x2) - (x1 * y2 - x2 * y1) * (x3 - x4)) / ((y1 - y2) * (x3 - x4) - (y3 - y4) * (x1 - x2)); point [1] = point [0] * ((y1 - y2)/(x1 - x2)) + ((x1 * y2 - x2 * y1)/(x1 - x2)); return point; } }