Я добавил код C Я надеюсь, что это помогает сделать функцию Java

читал, как сохранить точки, которые находятся между двумя точками (то есть: являются частью сегмента, с некоторой неточностью) здесь:Как я могу определить, находится ли точка рядом с определенной линией?

Таким образом, я реализовал этот маленький алгоритм в Java, и мой код таков (обратите внимание, что имя переменных должно быть понятным для вас! :)):

    List<Cupple> returned = new ArrayList<>(points_to_test);

    for(Cupple c : points_to_test) {

        /*if(c == segment_first_point || c == segment_last_point) {
            continue;
        }*/

        if(Math.abs(Math.abs(
                (segment_last_point.getNumber(0) - segment_first_point.getNumber(0))
                        *
                        (segment_first_point.getNumber(1) - c.getNumber(1))
                        -
                        (segment_first_point.getNumber(0) - c.getNumber(0))
                                *
                                (segment_last_point.getNumber(1) - segment_first_point.getNumber(1))
        )
                /
                Math.sqrt(
                        Math.pow((segment_last_point.getNumber(0) - segment_first_point.getNumber(0)), 2)
                                +
                                Math.pow((segment_last_point.getNumber(1) - segment_first_point.getNumber(1)), 2)
                )

        ) > maximal_allowed_distance) {

            returned.remove(c);
        }
    }

    return returned;

Чтобы быть уверенным, что вы понимаете:

returned список с точками, которые находятся на сегменте или рядом с сегментом (и «неточность» / максимальное расстояние, определяющее, находится ли точка вне сегмента, является переменной:maximal_allowed_distance)

points_to_test ВСЕ точки, которые присутствуют на моем графике: оба моих сегмента + точки, которые действительно находятся на сегменте + точки, которые находятся почти на сегменте (<=maximal_allowed_distance) + точки, которые находятся далеко от сегмента (>maximal_allowed_distance).Идея моего маленького алгоритма состоит в том, что я удаляю все последние.

segment_[first|last]_point являются конечностями двух сегментов

c текущая точкаpoints_to_test и я хочу знать, если это далеко от сегмента или в (в соответствии сmaximal_allowed_distance)

getNumber(0) возвращает координату X точки,getNumber(1) возвращает Y

Однако это не работает. Он не возвращает хорошие баллы (то есть: баллы, которые находятся в сегменте, принимая во вниманиеmaximal_allowed_distance).

Знаете ли вы, если я неправильно понял ответ, который я дал вам в первой строке этого вопроса? Видите ли вы ошибку в моей собственной реализации этого алгоритма?

Ответы на вопрос(1)

Ваш ответ на вопрос