powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вписывание многоугольника
11 сообщений из 111, страница 5 из 5
Вписывание многоугольника
    #36707949
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftNezarmayton,

Хорошо. Давайте впишем "сердце" в окружность. Две самые удаленные точки ничего не дадут.Не совсем "ничего". Если остальные точки не выпадают из этой окружности, то она и будет рузультирующей окружностью.
NezarИскать круг только по двум точкам - тоже не верно т.к. есть вариант когда такого круга просто не существует - пример - равносторонний треугольник (да вообще треугольник)

щас попробую совместить поиск путем одновременного перебора окружностей по двум и трем точкам - но сложность алгоритма будет N в 4 степени что оочень долго, но.... вобщем пока пробую это.Во-первых, не так уж и долго, точек у вас немного. Если подумать над оптимизацией, то даже без глубоких математических изысканий можно свести их количество до 10-20 или даже меньше.
Во-вторых, предварительная проверка пар точек уменьшит среднее время решения.

естественно точки выпадают - такая окружность не есть ограничивающей.

щас немного оптимизировал процесс - количество точек сводится только к количеству точек расположенных по периметру картинки. Хотя мне кажется что достаточно точек, которые лежат на сторонах ограничивающего картинку, прямоугольника.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36707954
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос
предположим что единственным решением задачи будет окружность построенная по двум точкам.
Всегда эти точки буду самые удаленные друг от друга?
Если нет - то можно пример.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36707968
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nezarщас немного оптимизировал процесс - количество точек сводится только к количеству точек расположенных по периметру картинки.я об этом уже давно вам толкую.
NezarХотя мне кажется что достаточно точек, которые лежат на сторонах ограничивающего картинку, прямоугольника.Нет. Контрпример - восьмиконечная звезда, вертикальные и горизонтальные лучи которой равны между собой, а диагональные - чуть-чуть длиннее.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36707985
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NezarЕще вопрос
предположим что единственным решением задачи будет окружность построенная по двум точкам.
Всегда эти точки буду самые удаленные друг от друга?Да. Самый длинный отрезок, который целиком помещается в окружность - это ее диаметр.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36708253
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftNezarщас немного оптимизировал процесс - количество точек сводится только к количеству точек расположенных по периметру картинки.я об этом уже давно вам толкую.
NezarХотя мне кажется что достаточно точек, которые лежат на сторонах ограничивающего картинку, прямоугольника.Нет. Контрпример - восьмиконечная звезда, вертикальные и горизонтальные лучи которой равны между собой, а диагональные - чуть-чуть длиннее.

хотелось сначало хоть както заставить работать алгоритм

со звездой - да... не подумал..

щас алгоритм выглядит так (как вы говорили)

ищутся две самые дальние точки
перебором ищется третья точка, которая с первыми двумя составляет круг
если в этот круг входят точки - хорошо - выбираем минимальный
если такие три точки не нашлись - то наш круг описан возле первых двух самых удаленных точек

... пока тестирую результаты
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36708332
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вашем, весьма дискретном случае можно попробовать следующий вариант:
0) Считается, что вы уже имеет ограничивающий прямоугольник.
1) Двойным циклом перебираете все координаты в пределах ограничивающего прямоугольника (если сможете, то начиная с его центра), это будет центр очередной пробной окружности. Среди всех пробных окружностей выбираете ту, у которой расстояние до самой дальней точки будет минимальным. Это расстояние будет радиусом искомой окружности.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36708736
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВ вашем, весьма дискретном случае можно попробовать следующий вариант:
0) Считается, что вы уже имеет ограничивающий прямоугольник.
1) Двойным циклом перебираете все координаты в пределах ограничивающего прямоугольника (если сможете, то начиная с его центра), это будет центр очередной пробной окружности. Среди всех пробных окружностей выбираете ту, у которой расстояние до самой дальней точки будет минимальным. Это расстояние будет радиусом искомой окружности.

работает - но долговато ((.... но работает ))
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36708751
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nezar
со звездой - да... не подумал..

Звезды быть не должно! Алгоритм выпуклой оболчки отбрасывает нафиг все вогнутые рёбра (на мой прикид это около 70% всех вершин. И чем их больше в многоугольнике тем эффективнее этот фильтр.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36708773
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonNezarсо звездой - да... не подумал..Звезды быть не должно! Алгоритм выпуклой оболчки отбрасывает нафиг все вогнутые рёбра (на мой прикид это около 70% всех вершин. И чем их больше в многоугольнике тем эффективнее этот фильтр.Не заморачивайтесь вы с этой звездой. Это был лишь конкретный контрпример на конкретный вопрос, но не более.
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36709622
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВ вашем, весьма дискретном случае можно попробовать следующий вариант:
0) Считается, что вы уже имеет ограничивающий прямоугольник.
1) Двойным циклом перебираете все координаты в пределах ограничивающего прямоугольника (если сможете, то начиная с его центра), это будет центр очередной пробной окружности. Среди всех пробных окружностей выбираете ту, у которой расстояние до самой дальней точки будет минимальным. Это расстояние будет радиусом искомой окружности.

в общем - протестировал этот вариант на разных рисунка - вроде с задачей справляется.
ОГРОМНОЕ СПАСИБО ВСЕМ за ПОМОЩЬ!

правда есть одно но - алгоритм долгий - приходится делать большой перебор точек (и как мне кажется - лишних) в пределах ограничивающего прямоугольника. Может можно как то сузить поиск?
Например - всегда ли центр описанной окружности будет в круге с центром в центре описывающего квадрата (или средней координате всех точек) и радиусом от него до ближайшей точки в наборе?
...
Рейтинг: 0 / 0
Вписывание многоугольника
    #36709628
Nezar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nezar,

оли центр может лежать в груге проведеном из центра ограничивающего прямоугольника - до средней точки многоугольника
...
Рейтинг: 0 / 0
11 сообщений из 111, страница 5 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вписывание многоугольника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]