Какие алгоритмы хороши для интерактивного / графического рисования в реальном времени?

Какие алгоритмы хороши для интерактивного / графического рисования в реальном времени для живых данных и прямого манипулирования?

В противном случае - какие библиотеки вы используете для рисования графиков?

Предложения;

  • Prefuse информационно-визуализация инструментарий
  • любые другие?

Кстати, я имею в виду графы в смысле теории графов - точки и линии

  • любой язык
  • под живым я имею в виду, что график должен быть управляемым один раз на экране.

7 ответов

Решение

Я бы порекомендовал любую библиотеку, над которой работал Джефф Хир:

Я считаю, что все три проекта с открытым исходным кодом. Джефф Хир довольно хорошо ссылается на статьи в своем коде, по крайней мере, в библиотеке Prefuse. Глядя на источник Prefuse:

BalloonTreeLayout: используется алгоритм Дж. Мелансона и И. Хермана из их исследовательской работы "Круговые рисунки корней деревьев", отчеты Центра математики и компьютерных наук, номер отчета INS – 9817, 1998.

ForceDirectedLayout.java: Нет упоминаний, но есть много комментариев, описывающих, как это работает.

FruchtermanReingoldLayout.java: ссылки на Юнга. На их сайте я нашел статью, в которой есть ссылки на различные алгоритмы.

NodeLinkTreeLayout.java: Используется алгоритм Кристофа Буххайма, Михаэля Юнгера и Себастьяна Лейперта из их исследовательской работы " Улучшение алгоритма Уокера для работы в линейное время, построение графика 2002". Этот алгоритм исправляет проблемы производительности в алгоритме Уокера, который обобщает алгоритмы Рейнгольда и Тилфорда метод для аккуратного рисования деревьев, чтобы поддержать деревья с произвольным числом детей в любом данном узле.

RadialTreeLayout.java: алгоритм, используемый Ка-Пинг Йи, Даниэлем Фишером, Рачной Дамия и Марти Херст в их исследовательской работе " Анимированное исследование динамических графов с радиальной компоновкой", InfoVis 2001. Этот алгоритм вычисляет радиальную компоновку, которая учитывает возможные изменение размеров и поддерживает ограничения как на ориентацию, так и на упорядочение, чтобы облегчить плавные и понятные переходы между конфигурациями компоновки.

SquarifiedTreeMapLayout: этот конкретный алгоритм взят из работы Bruls, DM, C. Huizing и JJ van Wijk, "Squarified Treemaps" в Data Visualization 2000, Proceedings of Joint Eurographics и IEEE TCVG Sumposium on Visualization, 2000, pp. 33-42. Доступно в Интернете по адресу http://www.win.tue.nl/~vanwijk/stm.pdf. Для получения дополнительной информации о TreeMaps в целом, смотрите http://www.cs.umd.edu/hcil/treemap-history

График рисования это большое поле. Вот ссылка на сайт сообщества исследователей рисования графиков. У них есть ежегодная конференция специально о графике. Я также могу предложить прочитать некоторые из публикаций профессора Дэвида Харела - одна из его областей исследований - рисование графиков, например, эта статья. Это кажется сложной проблемой в общем случае. Возможно, вы можете ограничить свое приложение некоторым ограниченным подмножеством графов (планарные графы, вероятно, слишком ограничительны). Вероятно, простые графы с небольшим набором вершин упрощают манипуляции.

набор инструментов визуализации prefuse выглядит как хороший кандидат.

Prefuse поддерживает богатый набор функций для моделирования данных, визуализации и взаимодействия. Он обеспечивает оптимизированные структуры данных для таблиц, графиков и деревьев, множество методов компоновки и визуального кодирования, а также поддержку анимации, динамических запросов, интегрированного поиска и подключения к базе данных. Prefuse написан на Java с использованием библиотеки Java 2D-графики и легко интегрируется в приложения Java Swing или веб-апплеты. Prefuse лицензируется в соответствии с условиями лицензии BSD и может свободно использоваться как в коммерческих, так и в некоммерческих целях. (с домашней страницы)

Я использую язык Dot для описания графиков. И вывод компилятора Dot включает SVG, который находится в XML и может быть встроен в XHTML.

http://en.wikipedia.org/wiki/DOT_language

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

Не уверен, что вы после...

Похоже, вы ищете что-то похожее на rrdtool?

Возможно, на их сайте есть информация, которая поможет:

http://oss.oetiker.ch/rrdtool/

Другие вопросы по тегам