Поместите случайные неперекрывающиеся прямоугольники в панель

Вы не можете получить чей-либо пароль через Аутентификацию Firebase. Это было бы огромной дырой в безопасности, не так ли? Изображение профиля должно быть доступно, если пользователь предоставил его через Facebook.

13
задан Scott Evernden 4 April 2009 в 14:50
поделиться

4 ответа

Можно смоделировать это рядом "свободных" прямоугольников, начиная с единственного с координатами 0,0, размер (x, y). Каждый раз необходимо добавить еще один прямоугольник, выбрать один из остающихся "свободных" прямоугольников, генерировать новый прямоугольник (с верхней левой координатой и измерить таким образом, что это будет полностью содержаться), и разделите тот прямоугольник, а также любой другой перекрывающийся "свободный" прямоугольник, такой, что дети выражают остающееся свободное пространство. Это приведет к от 0 до 4 новых прямоугольников (0, если новый прямоугольник был точно размером старого свободного прямоугольника; 4, если это находится в середине и так далее). Со временем Вы будете получать все больше меньших и меньших зон свободной торговли, таким образом, прямоугольники, которые Вы создаете, будут меньшими также.

Хорошо, не очень тщательно продуманное объяснение, легче показать на электронной доске. Но модель является той, для которой я использовал для нахождения стартового местоположения недавно cut'n вставляемые компоненты графического интерфейса пользователя; легко отслеживать доступные блоки экрана и выбрать (например), оставленный или самый верхний такая область.

16
ответ дан 1 December 2019 в 23:16
поделиться

Вот достойная статья о 2-х алгоритмах упаковки: http://www.devx.com/dotnet/Article/36005

Вы будете обычно хотеть своего рода алгоритм с помощью эвристики для достижения достойных результатов. Простым (но неоптимальный) решение был бы первый пригодный алгоритм.

5
ответ дан 1 December 2019 в 23:16
поделиться

Я использовал этот Прямоугольный алгоритм Упаковки в одном из моих приложений, доступных как исходные файлы C#.

Алгоритм инициализируется с размером панели, затем Вы выполняете итерации через все прямоугольники и получаете их положение. Порядок прямоугольников может влиять на результат, в зависимости от упаковщика.

3
ответ дан 1 December 2019 в 23:16
поделиться

Или ведите список прямоугольников, уже добавленных, и создайте алгоритм, который выясняет, куда поместить новый прямоугольник на основе того списка. Можно создать основной Прямоугольный класс для содержания информации о прямоугольниках.

Не должно быть так твердо создать пользовательский алгоритм.

-5
ответ дан 1 December 2019 в 23:16
поделиться