Расположите коробки, как в Exposé
-
05-07-2019 - |
Вопрос
Кто-нибудь знает способ расположить прямоугольники так, чтобы они наилучшим образом соответствовали определенной области?Прямоугольники можно увеличить до определенного предела, но они должны сохранять свои пропорции.Я в основном хочу перестроить экспозицию Mac OS:Изображение
Спасибо, Эволф
Решение
Проблема NP сложная, но это только для оптимального решения.Чего, я думаю, вы действительно хотите, так это решения, которое просто выглядит хорошо.
Поэтому я предлагаю поискать алгоритмы, которые обеспечивают хороший внешний вид данных.Однажды мне захотелось верстать картинки для DeepZoom Composer, и я попытался переработать алгоритм рисования графиков, основанный на силовом взаимодействии. http://en.wikipedia.org/wiki/Force-based_algorithms
Это сработало действительно хорошо даже для 600 сотен прямоугольников, вам просто нужно поиграть с деталями симуляции.
- Как рассчитывается расстояние?
- Какие функции вы используете для сил притяжения и отталкивания?
- Насколько сильное совпадение вы собираетесь принять?
Единственная проблема, которую я не смог решить полностью, заключалась в том, что прямоугольники имели форму круга, а не большого прямоугольника, что естественно при моделировании физики.Но вы можете обойти это с помощью тщательно размещенных вспомогательных источников силы.