2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритмы размещения данных на экране
Сообщение06.12.2011, 14:29 
Требутся помощь в поиске оптимальных алгоритмов для оптимизации размещения информации на экране. Имеется набор значков с подписями, при пересечении или наложении значков друг на друга их подписи не должны пересекаться, распологаясь в незанятой области рядом со своим значком. В случае если свободных областей не имеется, разрешается наложение подписей.

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение11.12.2011, 17:27 
Ну поищите алгоритмы детектирования столкновений из игровой физики. Т.е. я имею ввиду, что габаритные контейнеры надписей можно рассматривать как твердые "кирпичи", которые могут двигаться, но не могут пройти друг через друга.

Также можно попробовать смоделировать кулоновское отталкивание центров надписей (бросьте в центр каждой надписи по электрону, так, чтобы надписи не могли приблизиться друг к другу).

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

Можно и попроще попробовать. Например, если известно, что несколько значков пересекаются и вам нужно расположить надписи рядом со значками, то попробуйте просто размещать надписи вокруг группы пересекающихся значков, крепя эти надписи к точкам, лежащим на продолжении радиус векторов соответсвующих значков в системе координат с началом в геометрическов центре группы. Как-то так... Правдка отдельные такие группы могут конфликтовать друг с другом...

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение11.12.2011, 17:30 
Circiter в сообщении #514333 писал(а):
то попробуйте просто размещать надписи вокруг группы пересекающихся значков, крепя эти надписи к точкам, лежащим на продолжении радиус векторов соответсвующих значков в системе координат с началом в геометрическов центре группы. Как-то так...
Выглядит не очень оптимально. :roll:

-- Вс дек 11, 2011 20:32:38 --

Хотя моя мысль оказалась намного хуже. Ну и против остального ничего не имею.

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение11.12.2011, 17:38 
2arseniiv
Цитата:
Выглядит не очень оптимально.

В смысле? Наоборот, никаких асимптотически квадратичных проверок:
Код:
for(i=0; i<Cluster.Icons.Count(); i++)
{
    Direction=Cluster.Icons[i]-Cluster.Center();
    Position=Direction*(1+Gap/Direction.Length());
    PlaceLabel(i, Position);
}


Цитата:
Хотя моя мысль оказалась намного хуже

Какая ваша мысль? Я не видел вашего сообщения.

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение11.12.2011, 17:56 
Я её потому и не написал, что она уж очень долго формулируется и вообще куда-то не туда.

Circiter в сообщении #514339 писал(а):
Наоборот, никаких асимптотически квадратичных проверок:
Имел в виду, что при некоторых возможных конфигурациях будет нехороший результат, когда можно всё же расположить «красиво». Правда, это надо тех объектов накидать в одной пересекающейся группе немаленькую кучу.

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение12.12.2011, 11:00 
Спасибо за ваши мысли. Я думаю применить многоуровневый эволюционно-генетический метод для решения поставленной задачи, с некоторыми доработками. Результаты моей работы постараюсь разместить на данном форуме.

 
 
 
 Re: Алгоритмы размещения данных на экране
Сообщение13.12.2011, 02:19 
Как-то не очень стыкуется "многоуровневый эволюционно-генетический" и режим реального времени, который, как мне показалось, подразумевался изначально... Т.е. я почему-то думал, что алгоритм вы планируете применять в GUI вашей программки.

Если же real-time не требуется, то конечно, все средства хороши... Хотя я бы и здесь предпочел Гука-Кулона.

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group