Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Не подскажите алгоритм для задачи. Задание: задано множество точек на плоскости. Выбрать из них 4 разные точки, которые являются вершинами прямоугольника наибольшего периметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2005, 00:56 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Точки в россыпи? Никакой четкой системы нет? Тогда можно так: Берешь одну точку. Потом для каждой из оставшихся строишь прямую по базовой точке и второй. Потом строишь из первой точки перепендикуляр и проверяешь есть ли хоть одна точка которая лежит на этом перпиндикуляре? Если нету - значит прямоугольник на основе первых двух точек построить вообще нельзя. Если есть хоть одна, строишь перпендикуляр к первой прямой из второй точки. Опять проверяешь есть ли точки лежащие на нем? Если есть сравниваешь четветрую найденую точку с третьей во первых по расстоянию до первой и второй точки (должно совпадать), во вторых расстояние между третей и четвертой должно совпадать с расстоянием между первой и второй. Можно в принципе проверять не расстояния а вектора, но расстояния по моему проще :) Таким образом накапливаешь список прямоугольников которые вообще возможно построить на данной россыпи точек. Потом сравниваешь их периметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2005, 01:52 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую,я-то по началу думал простая задача. А надо немного поковыряться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2005, 08:56 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
2 WhiteOwl: Наверно лучше так переформулировать: перебираешь все точки множества, для каждой найденой точки выбираешь по две точки из оставшихся, считаешь скалярное произведение двух векторов (из базы в первую, из базы во вторую), если перпендикулярны -- сохранем эту тройку точек. Далее из всех найденных троек вы строим прямоугольники по следующему критерию: если одна тройка точек (A, B, C), а другая (A1, B1, C1), то A = A1, С = С1 и например BC перпендикулярна B1C1. Среди них ищем наибольший периметр. Просто скалярное произведение считается быстрее, чем расстояние. ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2005, 18:30 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Ну это вообще-то не "другя формулировка" а "изначально другой подход" :) А расстояния в моем подходе можно и не считать. Там можно расценивать все найденые отрезки как вектора и делать простое сравнение "если X1=X2 и Y1=Y2 то найденые отрезки могут быть противоположными сторонами прямоугольника". И даже без перемножения векторов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2005, 19:06 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Alex Friend...которые являются вершинами прямоугольника наибольшего периметра. Автор хотел сказать - четырехугольника? (ИМХО) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 15:06 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Можно конечно и четырехугольники считать, но тогда задача усложнится на порядок :) Берем три точки, проводим по ним два отрезка AB и BC. Теперь ищем такую четвертую точку D чтобы отрезок CD не пересекал AB и не совпадал с BC, а потом еще проверяем чтобы отрезок DA не пересекал BC. Иначе вместо четырехуголника у нас получится шестиугольник :) Плюс везде проверки на совпадение двух точек... Не, можно конечно и четырехуголники искать, но прямоугольники проще :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 18:21 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
mayton Alex Friend...которые являются вершинами прямоугольника наибольшего периметра. Автор хотел сказать - четырехугольника? (ИМХО) нет именно прямоугольника я накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 22:12 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Alex Friendя накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат. Если не находит - значит ошибся в кодировании формул перемножения векторов. Метод должен работать, хотя на мой взгляд он и не является самым оптимальным. Уравнение перпендикулярных прямых проще чем векторная алгебра :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 01:18 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
White Owl Alex Friendя накодил как советовал товарищ Lelikk, парочка шаманств и она работает, только не совсем правильно находит косые прямоугольники, то есть те, у которых стороны не параллельны осям координат. Если не находит - значит ошибся в кодировании формул перемножения векторов. Метод должен работать, хотя на мой взгляд он и не является самым оптимальным. Уравнение перпендикулярных прямых проще чем векторная алгебра :) По-моему как раз наоборот: возиться с уравнением прямой дольше (учитывая ее особые положения параллельно осям координат), чем вычислить выражение вида x1x2 + y1y2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 14:51 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
ой как все сложно.. Я бы по рабоче крестьянски сначала постоил бы все четырехугольники из точек, из них отсеял бы непрямоугольники, остаток отсортировал по размеру периметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 23:36 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Ну насчет полного перебора я тоже думал, конечно, однако хотелось подсократить количество операций. Я вам новую задачу принес на похожую тему. Дано множетсво случайно разбросанных точек и такое же множетсво окружностей. Надо провести прямую, пересекающую максимальное количество окружностей. Есть идеи, не могу сформулировать внятно, что предложите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 21:44 |
|
||
|
Максимальный периметр прямогольника
|
|||
|---|---|---|---|
|
#18+
Alex FriendЯ вам новую задачу принес на похожую тему. Дано множетсво случайно разбросанных точек и такое же множетсво окружностей. Надо провести прямую, пересекающую максимальное количество окружностей. Есть идеи, не могу сформулировать внятно, что предложите? Прямые по данным точкам проводить? Ну можно, по двум точкам провести прямую, взять от нее перпендикуляр, совместить перпендикуляр с центром очередной окружности и найти точку пересечения между исходной прямой и полученой. Потом считаешь расстояние от центра окружности до найденой точки - это минимальное расстояние между центром окружности и исходной прямой. Если оно меньше радиуса окружности, значит прямая ее пересекает. И по циклу, для каждой прямой проверяешь все окружности.... Это если в лоб решать :) А иначе думать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 23:10 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33056304&tid=1347666]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 491ms |

| 0 / 0 |
