powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помогите решить задачу
25 сообщений из 77, страница 2 из 4
помогите решить задачу
    #34204134
Пользователь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец2Aklin .
Если решать ту задачу которую ты решаешь(а не автор). то можно вот так:

максимальная окружность содержащаяся в многоугольнике обязана

1) лежать на 3 вершинах с внутренним углом > 90
OR
2) касаться 1 стороны и содержать 2 вершины с внутренним углом > 90
OR
3) касаться 2 сторон и содержать 1 вершину с внутренним углом > 90
OR
4) касаться 3 сторон

итого перебор всех этих случаев по всем вершинам и сторонам многоугольника - O(N^3) операций. но c оч большим простором для оптимизаций и отсеивания заведомо неподходящих случаев..
Как определить - точка (внутри/или снаружи) многоугольника?
(без этого вроде не решить задачу)
...
Рейтинг: 0 / 0
помогите решить задачу
    #34204262
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как определить - точка (внутри/или снаружи) многоугольника?

Произвольный луч (например вдоль X) пущенный из точки пересекает стороны нечётное кол-во раз.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34204393
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer aleks2Не обязан.
Обязан. Вписанная окружность обязана касаться каждой из сторон многоугольника , для невыпуклого многоугольника это условие невыполнимо.

Это кто сказал?
...
Рейтинг: 0 / 0
помогите решить задачу
    #34204474
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2 softwarer aleks2Не обязан.
Обязан. Вписанная окружность обязана касаться каждой из сторон многоугольника , для невыпуклого многоугольника это условие невыполнимо.

Это кто сказал?

определение вписанной окружности

но в данном случае надо только разместить окружность наибольшего радиуса внутри многоугольника
...
Рейтинг: 0 / 0
помогите решить задачу
    #34206057
Neeka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinя сразу скажу, что вам нужен будет ну очень неплохой компьютер. т.к. съедать алгоритм будет много премного.

далее.
возьмем расстояние А = максимально удаленные две точки многоуголника.

Для каждой прямой знаем (xa, ya )-(xb, yb)

далее.
для каждой точки многоулгольника (зная обе линии, коими эта вершина образована, позаботится заранее) берем нашу R = A/2 и D = A. Центр - на биссектриссе. расстояние от вершины до центра можно ввести программно (формулу вывести и ввести). Смотрим для каждой прямой, не пересекает ли прямая окружность. это решается. я думая стоит решать в общем виде, а не перебирать точки. (например задать программное уравнение, или условие, пока не решал как именно ) (кстати, по-моему самый толстый момент). Если пересекает хоть одну, то R = R/2. Если нет, то D = D/2, R = R + D. до определенно малого D.

Теперь прикидываем.
[кол-во вершин]*[log( точности D )]

В принципе не так уж и сложно. а вот программить замудохаца.

аффтопитезь

да, по поводу програмирования - замудохаца. Смысл мне ясен.Как теперь реализовать это? Не подскажете алгоритм, если можно по-подробней... я не знаю как запрограмировать вышеуказанное. Может есть какой-то вариант по-проще... ПЛЗ!!
...
Рейтинг: 0 / 0
помогите решить задачу
    #34206102
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2 softwarer
Обязан. Вписанная окружность обязана касаться каждой из сторон многоугольника , для невыпуклого многоугольника это условие невыполнимо.

Это кто сказал? http://gimn177.ekburg.ru/view.php?ID=30&slink=ref&main=2
...
Рейтинг: 0 / 0
помогите решить задачу
    #34206219
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G. aleks2 softwarer
Обязан. Вписанная окружность обязана касаться каждой из сторон многоугольника , для невыпуклого многоугольника это условие невыполнимо.

Это кто сказал? http://gimn177.ekburg.ru/view.php?ID=30&slink=ref&main=2

Гимназии нынче уже не те...

исходная постановка>> задача: в простой многоугольник вписать круг наибольшего радиуса..

Не требует касания всех сторон.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34206952
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это уже не вписанная окружность, а впихнутая.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34207353
Neeka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно алгоритм пожалуйсто... плз!!!!!
...
Рейтинг: 0 / 0
помогите решить задачу
    #34208742
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял автора Aklin, он утверждает что центр искомой окружности будет лежать на биссектрисе угла при одной из вершин многоугольника. Если моё понимание того что предложено правильно, то предлагаю проделать следующее:

1.Берем квадрат.
2.Вписываем в него окружность.
3.Отрезаем у квадрата вершины так, чтобы линии отреза не пeресекали и не касались вписанной окружности.
4.Проверяем гипотезу о том, что центр окружности лежит на бессиктрисе.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34209489
Neeka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mikhail_nЕсли я правильно понял автора Aklin, он утверждает что центр искомой окружности будет лежать на биссектрисе угла при одной из вершин многоугольника. Если моё понимание того что предложено правильно, то предлагаю проделать следующее:

1.Берем квадрат.
2.Вписываем в него окружность.
3.Отрезаем у квадрата вершины так, чтобы линии отреза не пeресекали и не касались вписанной окружности.
4.Проверяем гипотезу о том, что центр окружности лежит на бессиктрисе.
причем здесь квадрат?? мне круг надо в простой многоугольник вписать..
...
Рейтинг: 0 / 0
помогите решить задачу
    #34209821
mikolas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с какой точностью необходимо дать ответ задачи? Мне кажется что без методов оптимизации здесь не обойтись, но тогда возникает угроза попасть в локальный минимум, нужно будет придумать условие где начать поиск.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34209878
mikolas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то в ICQ-у к тебе не могу достучаться, Neeka.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211431
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Neeka

Ну видите ли, Aklin предложил некий метод решения Вашей проблемы основанный (если я правильно его понял) на предположении о том, что центр искомой окружности будет лежать на биссектрисе угла при одной из вершин многоугольника. Вы сказали:

Смысл мне ясен.

Очевидно, что данное утверждение не верно в случае невыпуклого многоугольника. Мой простой пример с квадратом демонстрирует что данное утверждение неверно и в случае выпуклого многоугольника, т.е. оно не верно вообще. Вот и всё.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211450
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n
3.Отрезаем у квадрата вершины так, чтобы линии отреза не пeресекали и не касались вписанной окружности.
4.Проверяем гипотезу о том, что центр окружности лежит на бессиктрисе.
Вы что не договорили про отрезание вершин.
Я повернул квадрат на 45 градусов и новым квадратом отрезал 4 вершины.
Центр продолжает лежать на биссектрисах.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211464
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, новые линии будут касаться
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211477
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повернуть квадрат на 45 градусов и увеличить сторону след. квадрата, так чтобы она оставалась меньше диагонали предыдущего квадрата. Взять пересечение квадратов. В полученный восьмиугольник нельзя вписать больший круг, а на биссектрисах центр окружности не лежит.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211586
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, думаю, чисто алгоритм поднять дня за два реально, я так посидел, посмотрел на эту задачу в течении часа - вообщем, по-моему, предётся лазить по всем сторонам и искать окружность макс. радиуса, касающуяся рассматриваемой в данный момент стороны и невыходящую за пределы многоугольника. В случае выпуклого многоугольника особых проблем не вижу, для невыпуклого у меня ещё есть ряд неясных моментов чисто с точки зрения численной реализации (ну там кусочно-линейная граница на противоположной стороне в общем случае будет разрывной - не физически конечно, но с точки зрения алгоритма). Думаю, реально построить алгоритм трудоёмкостью O(N*lnN), ну в худшем случае О(N^2). Однако это всё слова, слова, слова. Реально по соотношению (личный безкорыстный творческий интерес)/(трудоёмкость) с моей скромной точки зрения эта задача за пределами тех на которые стоит безвозместно тратить время и силы. Хотя, конечно, можно какую-нибудь наукообразную эвристику слепить по-быстрому, эта да, но это не так интересно.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211611
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тема намбер два:

радиус = максимально удаленные две точки/4
дельта = максимально удаленные две точки/2

первоначально надо найти центр *
* например ввести сетку и найти максиамальный удаление точки от краев (хотя бы по 8 углам, лучше больше)

смотрим, пересекает ли хто-нибудь (им отрезков)** данную окружность. далее если пересекает, то если перескает сверху, то пробуем пройти на дельта (для каждого направления рукурсия отдельно) вниз, влево, вверх. и вправо.
если все же пересекает,то уменьшаем радиус на дельта.
если не пересекает, то увеличиваем.
дельта = дельта/2.
если точность дельта достингута, екзит.

** - сложнуй случай - хорда

приложение - реально сложный случай

аффтопитезь
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211612
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффтопитезь
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211614
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно же

Aklin
радиус = максимально удаленные две точки/2
дельта = максимально удаленные две точки/4


как вывод: максиальный радиус - почти две максимально удаленный точки.
вот только центр надо бы найти верно.

аффтопитезь
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211617
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу пересекает ли отрезок окружность: товарищи, так это математика:

аффтопитезь
...
Рейтинг: 0 / 0
помогите решить задачу
    #34211993
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nВообщем, думаю, чисто алгоритм поднять дня за два реально, я так посидел, посмотрел на эту задачу в течении часа - вообщем, по-моему, предётся лазить по всем сторонам и искать окружность макс. радиуса, касающуяся рассматриваемой в данный момент стороны и невыходящую за пределы многоугольника.
Ещё раз намекну что эт тоже самое что рассматривать все тройки из вершин и сторон и пытатся вписать в них окружность. проверяя каждую окружность на нахождение внутри многоугольника.
алгоритм без лишних оптимизаций - элементарнейший.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34212812
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец mikhail_nВообщем, думаю, чисто алгоритм поднять дня за два реально, я так посидел, посмотрел на эту задачу в течении часа - вообщем, по-моему, предётся лазить по всем сторонам и искать окружность макс. радиуса, касающуяся рассматриваемой в данный момент стороны и невыходящую за пределы многоугольника.
Ещё раз намекну что эт тоже самое что рассматривать все тройки из вершин и сторон и пытатся вписать в них окружность. проверяя каждую окружность на нахождение внутри многоугольника.
алгоритм без лишних оптимизаций - элементарнейший.

это действительно при условии, что конеецчная окружность касается именно 3х сторон.
но выше было опровергнуто, ибо окружность может лежать на трех вершинах, например.
...
Рейтинг: 0 / 0
помогите решить задачу
    #34212843
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinэто действительно при условии, что конеецчная окружность касается именно 3х сторон.
но выше было опровергнуто, ибо окружность может лежать на трех вершинах, например.

рассматривать все тройки из вершин и сторон
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 2 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помогите решить задачу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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