Итак, судя по пересмотренному вопросу в комментариях: «учитывая последовательность отрезков, где каждый отрезок начинается там, где заканчивается предыдущий, образуют ли линии (примерно) замкнутый многоугольник?»это не должно быть слишком сложно.
Просто возьмите голову первого сегмента и сравните его с хвостом последнего сегмента.Если они достаточно близко друг к другу, то сегменты примерно образуют замкнутый (возможно, самопересекающийся) многоугольник.
Так что, если у вас есть n
сегменты, образованные последовательностью точек p_0,...,p_n
, вы можете рассмотретьЕвклидово расстояние между p_0
и p_n
.Идея заключается в следующем:
if dist(p_0,p_n) < THRESHOLD
create a new segment [p_n,p_0] closing off the polygon
delete pixels in the enclosed region
dist(p_0,p_n)
может быть реализовано как sqrt((p_0x - p_nx)^2 + (p_0y - p_ny)^2)
.Переменная THRESHOLD
будет некоторой константой, определяющей, какую ошибку вы хотите допустить между первой и последней точкой.