Проверка что созданный треугольник существует и не является дегенеративным

Здраствуйте, код по проверки дегенеративности есть, но если может кто подсказать если верно сделан или если есть другие варианты, а то вроде код есть а проверку дегенеративность не проходит))).

public Triangle(Point a, Point b, Point c) {
        
            if ((length1<=length2 && length2<=length3)&&((length1+length2) == length3))/*(((length1+length2) < length3)||((length1+length3) < length2)||((length2+length3) <
                    length1))*/
                throw new IllegalArgumentException("Triangle is degenerative");

тут какбы должен пройти проверку но ничего не случается.

double length1(Point a, Point b) {
        double xDistanceSquare = Math.pow(a.getX() - b.getX(), 2);
        double yDistanceSquare = Math.pow(a.getY() - b.getY(), 2);
        return Math.sqrt(xDistanceSquare + yDistanceSquare);
    }
    double length2(Point a, Point c) {
        double xDistanceSquare = Math.pow(a.getX() - c.getX(), 2);
        double yDistanceSquare = Math.pow(a.getY() - c.getY(), 2);
        return Math.sqrt(xDistanceSquare + yDistanceSquare);
    }
    double length3(Point c, Point b) {
        double xDistanceSquare = Math.pow(c.getX() - b.getX(), 2);
        double yDistanceSquare = Math.pow(c.getY() - b.getY(), 2);
        return Math.sqrt(xDistanceSquare + yDistanceSquare);
    }

Ответы (1 шт):

Автор решения: MBo

Раз вам даны точки, то треугольник, конечно, существует, а вырожденность можно проверить, узнав, лежат ли точки на одной прямой
(собственно, через векторное произведение считается удвоенная площадь, как Akina уже отметил, только с координатами Герон не нужен)

public Triangle(Point a, Point b, Point c) {
   if ((a.getX()-b.getX())*(c.getY()-b.getY())-(a.getY()-b.getY())*(c.getX()-b.getX())==0)   
            throw new IllegalArgumentException("Triangle is degenerative");

Если координаты внутри Point у вас не целые, то сравнивайте абсолютное значение указанного выражения с малой величиной (скажем, 1.0e-10 )

→ Ссылка