У меня есть задание, в котором пользователь может рисовать линии на форме. Как только пользователь создает строку, она помещается в список, содержащий все строки, ранее введенные пользователем. Затем линии рисуются на рамке, чтобы пользователь мог видеть ее желтым цветом. Моя задача состоит в том, чтобы, когда пользователь пытается создать связанный объект с помощью линий, этот объект должен стать зеленым, а не желтым. Итак, у меня есть две координаты каждого сегмента линии, как я могу определить, что закрытый объект формируется набором линий. Есть ли какой-нибудь алгоритм, которому я могу следовать?
Проверка, составляет ли набор линий замкнутый объект в контуре
comment
У меня есть две точки, определяющие каждый отрезок линии
- person Taimoor Naveed   schedule 15.01.2013
comment
Каждый раз, когда новый сегмент, который вы добавляете, пересекает одну из предыдущих линий (кроме предпоследней), вы добавляете замкнутый контур.
- person Ivaylo Strandjev   schedule 15.01.2013
Ответы (1)
Для каждого сегмента найдите точку пересечения с другими сегментами (если они есть). Когда вы найдете точку пересечения, свяжите ее с двумя связанными сегментами.
Теперь у вас есть «неориентированный граф» с точками пересечения как вершинами и сегментами как ребрами.
Все, что осталось сделать, - это найти циклы на вашем графике. Каждый цикл - это закрытый объект.
person
Nicolas Repiquet
schedule
15.01.2013
Ссылка на решение не является циклом, она просто СУЩЕСТВУЕТ или НЕ СУЩЕСТВУЕТ. Также требуется форма созданного многоугольника.
- person Толя; 15.01.2013