Russian Qt Forum
Ноябрь 22, 2024, 20:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
QPolygonF - сжатие (inflate)
Страниц:
1
2
[
3
]
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QPolygonF - сжатие (inflate) (Прочитано 26396 раз)
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #30 :
Март 05, 2013, 16:56 »
Урааа!!! Просто шикарно, Igors, спасибо огромное! Мне точно минимум неделю разбираться в коде, как оно там работает, но то что результат нужный - факт! Очень выручили
Цитата: Igors от Март 05, 2013, 16:23
Держитесь, помощь идет
(из послания к окруженной в Сталинграде армии)
В отличие от Паулюса я помощи дождался ))
Цитата: Igors от Март 05, 2013, 16:23
Ну в общем сделал (аттач). Довольно трудно, в каких-то случаях остаются "пипсики" которые формально корректны, но конфузят.
Это самый идеальный результат с кодом на руках, что я до сих пор видел.
Цитата: Igors от Март 05, 2013, 16:23
Ну да, легко смеяться над глупыми велосипедистами, а припрет - и где же оно, то "готовое решение" которое так экономит время и силы ?
В большинстве случаев этот "смех" обоснован, тем более когда велосипедист заявляет, что сделает круче в сто тыщ мильёнов раз, но на деле ничего не выходит
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #31 :
Март 05, 2013, 19:01 »
Цитата: alexis031182 от Март 05, 2013, 16:56
Мне точно минимум неделю разбираться в коде, как оно там работает, но то что результат нужный - факт!
Там (уже заметил) минимум 2 ошибки, будет время - подправлю. "В принципе" все довольно просто:
- создаем список всех точек
- создаем контейнер всех само-пересечений и сортируем его по длине "петель"
- убираем петли начиная с наименьшей. Петля удаляется из списка и точки петли помещаются в новый полигон (остров)
Однако технически трудновато
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #32 :
Март 05, 2013, 19:31 »
Цитата: Igors от Март 05, 2013, 19:01
Там (уже заметил) минимум 2 ошибки, будет время - подправлю.
Критические? Алгоритм Ваш, думаю, будет востребован. Поправьте по возможности, если не трудно.
Цитата: Igors от Март 05, 2013, 19:01
"В принципе" все довольно просто:
- создаем список всех точек
- создаем контейнер всех само-пересечений и сортируем его по длине "петель"
- убираем петли начиная с наименьшей. Петля удаляется из списка и точки петли помещаются в новый полигон (остров)
Однако технически трудновато
Не могу с Вами не согласиться. Там совсем не просто. Вроде и логика ясна, что надо сделать, а как это в коде повторить - целая проблема.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #33 :
Март 05, 2013, 21:47 »
Подрихтовал (там хотел было проскочить с поиском только по одной из осей - но это некорректно).
Edit: удалил аттач чтобы был только последний (см ниже)
«
Последнее редактирование: Март 06, 2013, 00:09 от Igors
»
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #34 :
Март 05, 2013, 21:51 »
Цитата: Igors от Март 05, 2013, 21:47
Подрихтовал (там хотел было проскочить с поиском только по одной из осей - но это некорректно).
Спасибо
Это проверка расширения полигона по вертикали и горизонтали?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #35 :
Март 05, 2013, 22:13 »
Цитата: alexis031182 от Март 05, 2013, 21:51
Это проверка расширения полигона по вертикали и горизонтали?
Нет. Каждый отрезок должен быть проверен на пересечение со всеми последующими. Схема
* ... *
P(i)*--------------P(i+1)* ось X
Я рассчитывал искать в сортированном списке от "левой" точки отрезка до "правой" - но так ловятся не все пересечения
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #36 :
Март 05, 2013, 22:40 »
А почему? Массив ведь одномерный, какая разница, в какую сторону итерацию проводить?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #37 :
Март 06, 2013, 00:12 »
Подумал еще раз - вроде изначально идея была правильной, все-таки можно обойтись одной осью. Вот последний вариант (attach)
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #38 :
Март 06, 2013, 00:50 »
Эта тема теперь больше для кладовой готовых решений подходит. Во всяком случае в инете нет решения этой задачи в открытом доступе. Я перерыл за последние несколько дней кучу ресурсов.
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: QPolygonF - сжатие (inflate)
«
Ответ #39 :
Март 06, 2013, 03:02 »
Цитата: alexis031182 от Март 06, 2013, 00:50
Во всяком случае в инете нет решения этой задачи в открытом доступе. Я перерыл за последние несколько дней кучу ресурсов.
Плохо искали, для обычных полигонов есть как минимум
Clipper
.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #40 :
Март 06, 2013, 10:43 »
Цитата: kamre от Март 06, 2013, 03:02
Плохо искали, для обычных полигонов есть как минимум
Clipper
.
А что понимается под "обычным"? В остальном хотелось бы отметить 2 момента
1) Расходы на поиск могут быть значительны, и не гарантируется что готовое решение будет найдено - а время идет. Даже если оно найдено - имеем затраты на изучение и освоение.
2) Конечно то что Вы показали в 100 раз мощнее того самопала что я написал - ну это нормально, чтобы достичь возможностей той либы нужны недели и больше (что я, Лубянку на приступ возьму?
). Однако я потратил день (не так уж много) и, что важно, прекрасно знаю все детали своей реализации. А вот используя готовое - ну как-то "не очень". Да, достигается результат, да, эффективно, но.. реализация остается "черным ящиком", я "научился пользоваться", а как оно работает - да хз, работает. Это имеет свои минусы
Так что вопрос городить велосипед или нет всегда остается открытым
А за ссылочку конечно спасибо (чего раньше молчали?)
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: QPolygonF - сжатие (inflate)
«
Ответ #41 :
Март 06, 2013, 12:41 »
Цитата: Igors от Март 06, 2013, 10:43
А что понимается под "обычным"? В остальном хотелось бы отметить 2 момента
Обычные полигоны - это те, у которых ребра всегда только отрезки. В проекте на работе нужны были еще как минимум и ребра в виде дуг окружностей, для таких полигонов тогда ничего под хорошими лицензиями не нашли и сами реализовывали.
Цитата: Igors от Март 06, 2013, 10:43
А за ссылочку конечно спасибо (чего раньше молчали?)
Да сам нашел ее в гугле минут за 10 до того как запостил. Просто помнил, что для обычных полигонов находили какие-то решения, но оно все нам не подходило. Сначала глядя на картинки здесь также подумал, что нужны ребра в виде дуг/безье....
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #42 :
Март 06, 2013, 14:14 »
Цитата: kamre от Март 06, 2013, 03:02
Плохо искали, для обычных полигонов есть как минимум
Clipper
.
Что же, тогда это говорит о том, что я просто просто не умею пользоваться поиском, т.к. на самом деле времени на поиск затратил очень много. Этот сайт мне не попадался.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QPolygonF - сжатие (inflate)
«
Ответ #43 :
Март 06, 2013, 16:50 »
Цитата: kamre от Март 06, 2013, 12:41
В проекте на работе нужны были еще как минимум и ребра в виде дуг окружностей, для таких полигонов тогда ничего под хорошими лицензиями не нашли и сами реализовывали.
Ну то уже "не совсем" полигоны. Было подобное (boolean фигур заданных кривыми Безье), решили расквантовать по отрезкам (с заданной пользователем точностью, выход все равно нужен был дискретный) а дальше дуст + свое творчество. Впрочем "малой кровью" все равно не вышло.
Цитата: alexis031182 от Март 06, 2013, 14:14
Что же, тогда это говорит о том, что я просто просто не умею пользоваться поиском, т.к. на самом деле времени на поиск затратил очень много. Этот сайт мне не попадался.
Не тот программист лучше кто лучше ищет
Ну в данном случае - да, было, но стоит чуть-чуть изменить задачу - и запросто может не оказаться, это нормально
Записан
alexis031182
Гость
Re: QPolygonF - сжатие (inflate)
«
Ответ #44 :
Март 06, 2013, 23:53 »
И всё же, имеет смысл опубликовать Ваше решение,
Igors
, в кладовой.
Записан
Страниц:
1
2
[
3
]
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...