Есть Point, каждый point имеет x и y. Первая мысль - проверить, лежат ли точки на одной прямой, но возникают сложности, не совсем понимаю, как это сделать.
public Quadrilateral(Point a, Point b, Point c, Point d) {
// Надо проверить на вырожденность
}
Вот метод для поиска пресечений отрезков.
private Point intersectPoint(Point start1, Point end1, Point start2, Point end2) {
double x1 = start1.getX();
double y1 = start1.getY();
double x2 = end1.getX();
double y2 = end1.getY();
double x3 = start2.getX();
double y3 = start2.getY();
double x4 = end2.getX();
double y4 = end2.getY();
double t = ((x1 - x3) * (y3 - y4) - (y1 - y3) * (x3 - x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));
double u = ((x1 - x3) * (y1 - y2) - (y1 - y3) * (x1 - x2)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));
double x = x1 + t * (x2 - x1);
double y = y1 + t * (y2 - y1);
if (0.0 <= t && t <= 1.0 && 0.0 <= u && u <= 1.0) {
return new Point(x, y);
}
return null;
}
Буду рад помощи