Проверка, составляет ли набор линий замкнутый объект в контуре

У меня есть задание, в котором пользователь может рисовать линии на форме. Как только пользователь создает строку, она помещается в список, содержащий все строки, ранее введенные пользователем. Затем линии рисуются на рамке, чтобы пользователь мог видеть ее желтым цветом. Моя задача состоит в том, чтобы, когда пользователь пытается создать связанный объект с помощью линий, этот объект должен стать зеленым, а не желтым. Итак, у меня есть две координаты каждого сегмента линии, как я могу определить, что закрытый объект формируется набором линий. Есть ли какой-нибудь алгоритм, которому я могу следовать? введите описание изображения здесь


person Taimoor Naveed    schedule 15.01.2013    source источник
comment
У меня есть две точки, определяющие каждый отрезок линии   -  person Taimoor Naveed    schedule 15.01.2013
comment
Каждый раз, когда новый сегмент, который вы добавляете, пересекает одну из предыдущих линий (кроме предпоследней), вы добавляете замкнутый контур.   -  person Ivaylo Strandjev    schedule 15.01.2013


Ответы (1)


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

Теперь у вас есть «неориентированный граф» с точками пересечения как вершинами и сегментами как ребрами.

Все, что осталось сделать, - это найти циклы на вашем графике. Каждый цикл - это закрытый объект.

person Nicolas Repiquet    schedule 15.01.2013
comment
Ссылка на решение не является циклом, она просто СУЩЕСТВУЕТ или НЕ СУЩЕСТВУЕТ. Также требуется форма созданного многоугольника. - person Толя; 15.01.2013