![]() |
|
|
![]()
|
|
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: нет Всего: 13 |
Уважаемые, форумчане
Решили с другом сделать генератор диаграмм для презентации в стиле WP7. Застрял на алгоритме размещения элементов, прилагаю скрин Смысл в том, что хотелось бы, что бы элементы по краям равнялись (stick) к ближайшим элементам (точнее к уровню их границ), а то получается слишком много безсмысленных свободных мест. ( Например на 2й картинке (с цифрой 3) видно, что нижний квадрат 67% равняется по правой границе с верхним, что выглядит не очень красиво, было бы лучше со средним ) Наведите хотя бы на идею возможного алгоритма, что бы смотрелось более красиво. На данный момент имеется только алгоритм полного перебора всех пересечений продолжений границ каждого элемента и выбор позиции по критерю близости к центру. Зааранее спасибо |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: нет Всего: 13 |
Неужели ни у кого нету идей?
|
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Поищи по этой ветке (Алгоритмы). Мне кажется, подобное обсуждалось уже несколко раз. Но не недавно.
Кстати, на последней картинке у тебя чем больше объект, тем ближе он к центру. Если этот вариант устраивает, то можно отсортировать объекты по размеру. Нарисовать самый большой, потом добавить второй. Третий и последующие добавлять по принципу "найти такое место, чтобы внешние габариты всей картинки были минимальны". Понятное дело, что к габаритам каждого объекта надо добавить размер обязательных полей. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| sQu1rr |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: нет Всего: 13 |
Искал вроде, не помните название случайно? Ну как сказать. У меня такой алгоритм, что он сортирует по площади и сует первый в центр, а другие относительно него.
Вроде как это выполняется без проблем, но мне надо, что бы выглядило красиво, а именно, что бы у двух рядомлежащих элементов было общее продолжение одной из сторон, как минимум.
Всмысле? btw, алгоритм строит диаграмму в условном пространстве, потом увеличивает ее до нужных размеров. Мне это не то что важно, способ выкрутиться я то найду, просто что б, как говорица не изобретать велосипед, да еще и
обнадеживает, найти бы Спасибо за ответ |
||||||||
|
|||||||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
В том-то и дело что не помню - было это году в 2010 наверное. Я попытался поискать - не нашел. Вроде я даже писал там что-то. Но поиск на мой ник не работает - слишком ник короткий.
Что помню: прямоугольные элементы расставлялись красиво в прямоугольном же поле. Кажется задавался приоритет - какие зрительные линии выравнивать в первую очередь. Ну, например, верхний край важнее нижнего, внешние края важнее внутренних, и т.п. Кстати, еще можно покопать в сторону алгоритмов размещения элементов на изображениях графов. Я, например видел такой: Элементы графа располагаются как бог пошлет. Задается критерий оптимизации - например наименьшее занятое пространство или наименьшие габариты. Элементы начинают дергательные движения в надежде занять места, лучшие с точки зрения оптимизации. К этому наверняка можно и генетические алгоритмы прикрутить - проверять перестановки между элементами. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: нет Всего: 13 |
Дело в том что данная реализация сделана на javascript (да я знаю, ничего не говорите, я бы с удовльсвием на С/С++ написал бы, если бы это не нужно было бы для сайта), и скорость играет не маленькое значение. Пороюсь в сторону графов, конечно, но был бы признателен, если бы все же нашли ту тему |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Единственная надежда - если из глубин моего подсознания всплывет какое-нубудь уж очень поископригодное слово, которое было в той теме. К сожалению плавание слов в подсознании - процесс стохастический. Может сегодня всплывет, а может к концу существования вселенной
Но если javascript, то врядли можно загружаться сложными алгоритмами. Может сделать примерно по такому принципу:
Это сообщение отредактировал(а) _Y_ - 2.10.2011, 10:09 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |