LINUX.ORG.RU

Поиск замкнутых областей

 ,


0

2

Добрый вечер, ЛОР!

У меня есть координаты начал и концов некоторого количества отрезков. Передо мной стоит задача найти замкнутые области, образованные пересечениями этих отрезков.

На данный момент у меня получилось реализовать только поиск точек пересечения отрезков, вычисляя координаты решением системы уравнений (наглядно: http://i.imgur.com/40XLwW8.png).

Можно ли как-то из списка точек пересечения и списка координат отрезков получить наборы точек-вершин многоугольников (замкнутых областей). Или же я двигаюсь не в том направлении, и все реализуется гораздо проще?

1. Строишь триангуляцию, 2. используешь известные алгоритмы.

Получается Делоне + Вороной.

Eddy_Em ☆☆☆☆☆
()

Не совсем в тему, но мб подойдёть.

1. Рендеришь свои отрезки в монохромный растр (который может быть хитрее чем растр, а на самом деле - дескрипторная таблица с размером ячейки равном шагу квантования). 2. Заливаешь дырки (http://tpgit.github.io/Leptonica/seedfill_8c_source.html, хинт, дырка это связная область, которая не связна с границей изображения). 3. Эрозия маленьким структурным элементом, вроде крестик 3х3, чтоб хвосты линий поудалять. 4. Всё что осталось - это и есть твои области.

nikitos ★★★
()
Последнее исправление: nikitos (всего исправлений: 1)

Строите граф, в котором вершины - точки пересечения, а ребра - куски отрезков между этих точек на плоскости (т.е. если две точки пересечения лежат на одном отрезке, в графе между соответствующими точкам вершинами есть ребро). На графе ищете все циклы, проверяя, чтобы вершины не входили в путь дважды. Каждый уникальный цикл суть замкнутая область. Должно работать)

yoghurt ★★★★★
()
Ответ на: комментарий от x4DA

Интересно, ратующие за «точность» товарищи могут аналитически оценить точность нахождения точки пересечения отрезков (хотя бы двух), если вершины заданы float32, float64 итд?

Как бы о том что метод единственный, я и не заявлял, как и о том, что он «точный». Но в каком-то практичном use-case может оказаться полезным.

nikitos ★★★
()
Ответ на: комментарий от nikitos

Интересно, ратующие за «точность» товарищи могут аналитически оценить точность нахождения точки пересечения отрезков (хотя бы двух), если вершины заданы float32, float64 итд?

давай алгоритм и вычислительную модель, оценю.

x4DA ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.