|
|
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
rt123> После 10 нычки из будет уже много... устану делить и выделять.. Я понял буквально, что будет только 5 штук5 штук было условно в первом посте и интереса не представляют (любой алгоритм отработает мгновенно, кроме случайного при условии совсем плотного размещения). Обсуждается N. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 10:20 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
Давайте в терминах задачи на моей ссылке. Есть стена W*H. На ней висят N картин разных размеров wi*hi Надо попытаться найти место для (N+1)-й картины, размером A*B. Вращать картину на 90гр. нельзя. Я бы делал так (позже попробую накодить): 1. Сортирую все картины по X. 2. В цикле по всем картинам, для текущей картины i иду по картинам, висящим правее ее, пока не встречу первую картину j с Х ее левой стороны такую, что X_left[j] - X_right[i] >= A т.е. по Х повесить новую картину можно. 3. Теперь осталось проверить: можно ли повесить новую картину (А*В) по Y ? Скажем, мы проверяем картины №5 и №11. Сортируем картины №№6,7,8,9,10 по Y. И смотрим: влазит ли новая картина по Y своей высотой В среди этих 5 промежуточных картин? (есно, это элементарный одномерный случай) Если влазит - место для новой картины найдено. Full Stop. Если нет: бросаем картину №5 и идем дальше по нашему циклу и проверяем картину №6 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 12:28 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
Я отстал от обуждения. А разве картины - это удачная аналогия к постановке? Ведь картины обычно вешают без "перекрытий". А у ТС была возможность кидать прямоугольники внахлёст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 12:37 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
> А у ТС была возможность кидать прямоугольники внахлёст. Хм... разве? Правда, я основном пейсатель :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:38 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
maytonА разве картины - это удачная аналогия к постановке? Ведь картины обычно вешают без "перекрытий". А у ТС была возможность кидать прямоугольники внахлёст.Это не критично. Два прямоугольника внахлест = три прямоугольника рядом. Конечно, если прямоугольники могут быть разного размера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:42 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
Разница, думаю будет в статистике индекса по точкам. В режиме нахлёста мы можем получить эффект поглощения одник прямоугольников другими. Эдакая само-оптимизация. Для "картинной галлереи", наверное будет по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 14:38 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
VolochkovaПрямоугольники строго идут параллельно осям координат. Никаких там под углом и т.д. Блин, неужели так все сложно... Размеры прямоугольников всегда одинаковые. Допустимо касание прямоугольников. хоть в цикле идти со смещением и перебором искать область. не, mayton, нахлесты, видимо, все-таки запрещены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 18:14 |
|
||
|
Поиск свободной нычки.
|
|||
|---|---|---|---|
|
#18+
rt123Давайте в терминах задачи на моей ссылке. Есть стена W*H. На ней висят N картин разных размеров wi*hi Надо попытаться найти место для (N+1)-й картины, размером A*B. Вращать картину на 90гр. нельзя. Я бы делал так (позже попробую накодить): 1. Сортирую все картины по X. 2. В цикле по всем картинам, для текущей картины i иду по картинам, висящим правее ее, пока не встречу первую картину j с Х ее левой стороны такую, что X_left[j] - X_right[i] >= A т.е. по Х повесить новую картину можно. 3. Теперь осталось проверить: можно ли повесить новую картину (А*В) по Y ? Скажем, мы проверяем картины №5 и №11. Сортируем картины №№6,7,8,9,10 по Y. И смотрим: влазит ли новая картина по Y своей высотой В среди этих 5 промежуточных картин? (есно, это элементарный одномерный случай) Если влазит - место для новой картины найдено. Full Stop. Если нет: бросаем картину №5 и идем дальше по нашему циклу и проверяем картину №6 и т.д. (N+1)-ая тех же размеров - wi*hi. Теоретически могут и в нахлест, но пока берем что они только касаются. И перекрытий нельзя. У меня есть пока только одна идея.. стену делим на сектора (wi*hi) и смотрим входит ли в этот сектор другая "картина"? Если нет то кидаем картину иначе к следующему сектору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 02:27 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1343393]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
225ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 523ms |

| 0 / 0 |
