Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [Математика-Геометрия]Как разложить прямоугольники (http://www.flasher.ru/forum/showthread.php?t=80046)

Король 20.05.2006 23:16

[Математика-Геометрия]Как разложить прямоугольники
 
Пришла в голову задача - у самого пока идей нет, но я размышляю и предлагаю вам сделать то же самое, по желанию.
Итак, дано: Прямоугольное поле и некоторое количество прямоугольных объектов разных размеров. Требуется - алгоритм размещения этих объектов на поле, отвечающий следующим условиям:
1)прямоугольники не пересекаются
2)прямоугольники можно менять в размере (оставляя неизменными пропорции сторон) - но все на одну и ту же величину (то-есть, если мы один прямоугольник скейлим на 80% от оригинала - все остальные - тоже на 80%)
3)эта величина должна быть максимально возможно близка к 100% (то есть, если такое размещение, при котором менять размеры не придется вообще - существует, то мы выбираем его)
если кто сидит под маком и знает, что такое Expose - тот может посмотреть алгоритм в работе у себя на рабочем столе.

Nirth 21.05.2006 04:03

я бы сделал так.
есть класс отвечающий за отображение этих самых прямоугольников назовем его Rectangle ( для удобства, и большей гибкости, он будет реализовывать интерфейс IResizable).
В классе есть методы, setSize(w:Number,h:Number), метод передает параметр специальному менеджеру - ResizeManager.

Класс ResizeManager занимаеться вычислениями, этому классу экземпляры IResizable передают желаемые размеры, о ведет просчет, максимально допустимого размери, и увеличивает, на желаемое, или на максимальное(если желаемое больше чем надо)
ну я думаю тебе не надо объяснять как считать =)


Часовой пояс GMT +4, время: 03:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.