powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Максимальный периметр прямогольника
13 сообщений из 13, страница 1 из 1
Максимальный периметр прямогольника
    #33053853
Alex Friend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не подскажите алгоритм для задачи.
Задание: задано множество точек на плоскости.
Выбрать из них 4 разные точки, которые являются вершинами прямоугольника наибольшего периметра.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33053874
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точки в россыпи? Никакой четкой системы нет?
Тогда можно так:
Берешь одну точку. Потом для каждой из оставшихся строишь прямую по базовой точке и второй. Потом строишь из первой точки перепендикуляр и проверяешь есть ли хоть одна точка которая лежит на этом перпиндикуляре? Если нету - значит прямоугольник на основе первых двух точек построить вообще нельзя. Если есть хоть одна, строишь перпендикуляр к первой прямой из второй точки. Опять проверяешь есть ли точки лежащие на нем? Если есть сравниваешь четветрую найденую точку с третьей во первых по расстоянию до первой и второй точки (должно совпадать), во вторых расстояние между третей и четвертой должно совпадать с расстоянием между первой и второй. Можно в принципе проверять не расстояния а вектора, но расстояния по моему проще :)
Таким образом накапливаешь список прямоугольников которые вообще возможно построить на данной россыпи точек. Потом сравниваешь их периметры.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33053923
Alex Friend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую,я-то по началу думал простая задача.
А надо немного поковыряться.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33054256
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 WhiteOwl:
Наверно лучше так переформулировать: перебираешь все точки множества, для каждой найденой точки выбираешь по две точки из оставшихся, считаешь скалярное произведение двух векторов (из базы в первую, из базы во вторую),
если перпендикулярны -- сохранем эту тройку точек.
Далее из всех найденных троек вы строим прямоугольники по следующему критерию: если одна тройка точек (A, B, C), а другая (A1, B1, C1), то A = A1, С = С1 и например BC перпендикулярна B1C1. Среди них ищем наибольший периметр.
Просто скалярное произведение считается быстрее, чем расстояние.
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33055214
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это вообще-то не "другя формулировка" а "изначально другой подход" :)

А расстояния в моем подходе можно и не считать. Там можно расценивать все найденые отрезки как вектора и делать простое сравнение "если X1=X2 и Y1=Y2 то найденые отрезки могут быть противоположными сторонами прямоугольника". И даже без перемножения векторов :)
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33055782
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Friend...которые являются вершинами прямоугольника наибольшего периметра.

Автор хотел сказать - четырехугольника? (ИМХО)
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33056078
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно конечно и четырехугольники считать, но тогда задача усложнится на порядок :)
Берем три точки, проводим по ним два отрезка AB и BC. Теперь ищем такую четвертую точку D чтобы отрезок CD не пересекал AB и не совпадал с BC, а потом еще проверяем чтобы отрезок DA не пересекал BC. Иначе вместо четырехуголника у нас получится шестиугольник :)
Плюс везде проверки на совпадение двух точек...
Не, можно конечно и четырехуголники искать, но прямоугольники проще :)
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33056304
Alex Friend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton Alex Friend...которые являются вершинами прямоугольника наибольшего периметра.

Автор хотел сказать - четырехугольника? (ИМХО)
нет именно прямоугольника


я накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33056380
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Friendя накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат.
Если не находит - значит ошибся в кодировании формул перемножения векторов.
Метод должен работать, хотя на мой взгляд он и не является самым оптимальным. Уравнение перпендикулярных прямых проще чем векторная алгебра :)
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33067328
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Alex Friendя накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат.
Если не находит - значит ошибся в кодировании формул перемножения векторов.
Метод должен работать, хотя на мой взгляд он и не является самым оптимальным. Уравнение перпендикулярных прямых проще чем векторная алгебра :)

По-моему как раз наоборот: возиться с уравнением прямой дольше (учитывая ее особые положения параллельно осям координат), чем вычислить выражение вида x1x2 + y1y2.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33078230
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой как все сложно.. Я бы по рабоче крестьянски сначала постоил бы все четырехугольники из точек, из них отсеял бы непрямоугольники, остаток отсортировал по размеру периметра.
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33080998
Alex Friend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну насчет полного перебора я тоже думал, конечно, однако хотелось подсократить количество операций.

Я вам новую задачу принес на похожую тему.
Дано множетсво случайно разбросанных точек и такое же множетсво окружностей. Надо провести прямую, пересекающую максимальное количество окружностей.
Есть идеи, не могу сформулировать внятно, что предложите?
...
Рейтинг: 0 / 0
Максимальный периметр прямогольника
    #33081038
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex FriendЯ вам новую задачу принес на похожую тему.
Дано множетсво случайно разбросанных точек и такое же множетсво окружностей. Надо провести прямую, пересекающую максимальное количество окружностей.
Есть идеи, не могу сформулировать внятно, что предложите?
Прямые по данным точкам проводить?
Ну можно, по двум точкам провести прямую, взять от нее перпендикуляр, совместить перпендикуляр с центром очередной окружности и найти точку пересечения между исходной прямой и полученой. Потом считаешь расстояние от центра окружности до найденой точки - это минимальное расстояние между центром окружности и исходной прямой. Если оно меньше радиуса окружности, значит прямая ее пересекает. И по циклу, для каждой прямой проверяешь все окружности....
Это если в лоб решать :) А иначе думать надо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Максимальный периметр прямогольника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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