Форум программистов, компьютерный форум CyberForum.ru

Визуализация графов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.98
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
10.02.2013, 19:55     Визуализация графов #1
В общем есть такой пакет http://ru.wikipedia.org/wiki/Graphviz

С помощью него можно вводить граф ввиде dot файла и получать её визуализацию
( вершины графа располагаются оптимальным образом )

Описание утилит на русском тут http://rus-linux.net/nlib.php?name=/...-ru-10-16.html

Оф. сайт http://www.graphviz.org/ Тут же можно скачать и установить, причем как пакет с утилитами и dll -ками, инклюдами так и сами соры.

Сама библиотека написана на Си. Никак не могу понять как использовать эту либу в своих программах.
Пытаюсь скомпилить примеры из доки но без успешно то ли программа завершается крахом то ли требует несуществующие dll.

Возможно кто-то имел дело с этой библиотекой и знает как её использовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 19:55     Визуализация графов
Посмотрите здесь:

Реализация графов C++
генерирование особых графов C++
Теорие графов. Композиция двух неор. графов. C++
C++ Визуализация
Программирование графов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.02.2013, 22:33     Визуализация графов #21
Цитата Сообщение от Avazart Посмотреть сообщение
но как к примеру сделать свой редактор, что бы пользователь мог "двигать" узлы, а не имел просто статическую картинку?
QGraphicsScene позволяет "двигать" графические элементы сцены

Не по теме:

а вообще господа пишущие на js посмеются над таким заданием

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
18.02.2013, 22:51  [ТС]     Визуализация графов #22
Цитата Сообщение от Jupiter Посмотреть сообщение
QGraphicsScene позволяет "двигать" графические элементы сцены
Это чЁ такое?
Qt класс или обвертка Qt над тем же GraphViz ?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
а вообще господа пишущие на js посмеются над таким заданием
А какое тут задание ?
Тут вопрос прикрутки либы ... думаю использовать было бы не проблема...
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
20.02.2013, 22:52  [ТС]     Визуализация графов #23
Хорошо если нельзя получить координаты напрямую с помощью прикрутки либы к С++ программе то как ?

Вызывать dot.exe и парсить dot - файл который получается на выходе вытаскивая координаты ?

Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
24.02.2013, 18:10  [ТС]     Визуализация графов #24
Для того что бы попробовать реализовать алгоритм визуализации самому создал новую тему Визуализация графа (реализация алгоритма)
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
13.05.2013, 15:38     Визуализация графов #25
Цитата Сообщение от Avazart Посмотреть сообщение
Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
Если просто попользоваться, то довольно удобен yEd. А для встраивания в программу я бы тоже раскладку делал на основе graphviz, он умеет отдавать координаты для вершин и для контрольных точек сплайнов, через которые ребра представляются.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 15:44  [ТС]     Визуализация графов #26
Цитата Сообщение от kamre Посмотреть сообщение
то довольно удобен yEd
Чет не видел там варианта для С++, а внешне можно и GraphViz использовать только это порождает другие проблемы.

Цитата Сообщение от kamre Посмотреть сообщение
А для встраивания в программу я бы тоже раскладку делал на основе graphviz, он умеет отдавать координаты для вершин и для контрольных точек сплайнов, через которые ребра представляются.
Под Windоws, GraphViz не получается использовать как библиотеку в том то и проблема !!!

Читай тему сначала ...
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
13.05.2013, 16:31     Визуализация графов #27
Цитата Сообщение от Avazart Посмотреть сообщение
Чет не видел там варианта для С++
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.

Цитата Сообщение от Avazart Посмотреть сообщение
Под Windоws, GraphViz не получается использовать как библиотеку в том то и проблема
Можно вызывать как подпроцесс и парсить его выход, если уж совсем все так плохо.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 16:38  [ТС]     Визуализация графов #28
Цитата Сообщение от kamre Посмотреть сообщение
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.
И что оно оптимально расставляет узлы как graphviz ?

Цитата Сообщение от kamre Посмотреть сообщение
Можно вызывать как подпроцесс и парсить его выход, если уж совсем все так плохо.
А нафига такое щастье, если для этого нужно садится и писать парсер dot ?
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
13.05.2013, 17:02     Визуализация графов #29
Цитата Сообщение от Avazart Посмотреть сообщение
И что оно оптимально расставляет узлы как graphviz ?
Умеет автоматическую раскладку, там в ролике показывается.


Цитата Сообщение от Avazart Посмотреть сообщение
А нафига такое щастье, если для этого нужно садится и писать парсер dot ?
Ну раз dot не подходит, можно еще в svg получать раскладку, для него уже готовые парсеры есть. А лучше всего собрать из исходников самому и вызывать напрямую.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 17:07  [ТС]     Визуализация графов #30
Цитата Сообщение от kamre Посмотреть сообщение
Ну раз dot не подходит, можно еще в svg получать раскладку, для него уже готовые парсеры есть. А лучше всего собрать из исходников самому и вызывать напрямую.
Ха собрать ... под Windows ? по мойму сильно оптимистично. К тому же там вроде исходники только старых версий...
Вопрос в том что под Ubuntu все работает без проблем ...
Да и сами утилиты как-то работают же ?

Насчет готовых парсеров не слышал вообще, в любом это через десятую дорогу.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:43     Визуализация графов #31
Avazart, Хочу напомнить вам, вдруг вы забыли, что в 3D граф куда легче отобразить, да и там вообще можно всегда без пересечений сделать, тем более 3-х мерная проволочная проекция крайне проста в реализации.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 17:47  [ТС]     Визуализация графов #32
Ага и насколько это будет наглядно, a ?

Все делается ради простоты и наглядности ...
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:50     Визуализация графов #33
Avazart, это будет крайне наглядно и очень удобно. Лично моё мнение, так как сам уже делал.

Добавлено через 1 минуту
Avazart, http://www.youtube.com/watch?v=FjY3EPR369o
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 17:55  [ТС]     Визуализация графов #34
Ну и где тут наглядность ? Красиво да, но явно не наглядно...

К тому же с реализацией тоже придется попотеть ибо тоже как то надо расставлять вершины, тоже нужно считать...
Ко всем проблемам добавляется еще и 3D графика ...

Да и то что делает graphviz тоже можно реализовать только это затраты и время, при том что уже это реализовано и работает по крайней мере в Linux
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:00     Визуализация графов #35
Цитата Сообщение от Avazart Посмотреть сообщение
Ко всем проблемам добавляется еще и 3D графика ...
Это обычный 3д разворот вокруг 3 осей, сдвиг и умножение на число и перспективное преобразование, ничего более. В 3D тут нет проблем.
Такая работа с нуля пишется за час.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
13.05.2013, 18:03  [ТС]     Визуализация графов #36
Ага а кто вершины расставлять будет в 3d проекции ?
Насколько это будет наглядным если необходимо буде отображать надпись возле каждой вершины,ребра ?
Как дать возможность двигать элементы пользователю в 3D ?
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:19     Визуализация графов #37
Цитата Сообщение от Avazart Посмотреть сообщение
Ага а кто вершины расставлять будет в 3d проекции ?
Вы хотите сказать, вам сложно взять обычное распределение координат вершин в пространстве ?
"наглядность" заключается в равномерности распределения, с учётом min расстояния между парой вершин графа.
Алгоритмом Флойда вам в помощь, тут O(N^3).

Добавлено через 5 минут
Можно придумать и быстрее, возможно, хотя и сомнительно, но вам нужна простота.

Добавлено через 1 минуту
Avazart, Вообще, вы правы, раскидать вершины в пространстве, будет посложнее чем 3д написать, но времени не займёт много всё равно. Я, вообще, упругими связями их раскидывал, прибегнув к физической модели, алгоритм ооочень простой, но не max "наглядно"
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 405
25.06.2014, 20:47     Визуализация графов #38
Работая в программах на С++ с графами я тоже сталкивался с проблемой визуализации. Она решалась мной примерно так. Характеристики граaа (вершины и списки инцидентности или матрица смежности в подобных задачах удобно хранить в файле или БД MS Access. Но кроме характеристик вершин храните дополнительно и ее пару координат.Функцию отрисовки графа в Delphi или C++ Builder не так сложно написать. (единственное усложнение -отрисовка связей со стрелками в случае орграфа). Для каждой вершины создается при работе в VCL визуальный объект - лучше всего TStaticText , сойдет и TButton - правда нет управления цветом и переносом текста.
При их создании закладывают возможность передвижения их юзером с помощью мышки по экрану.
Другими словами, граф 1-й раз как-то загружается. Юзер распутывает клубок расставляя вершины по своему усмотрению. И следующее сохранение в файл и следующая загрузка уже будут с "хорошими" координатами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 21:22     Визуализация графов
Еще ссылки по теме:

Теория графов C++
Визуализация C++
C++ Для любителей графов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
25.06.2014, 21:22  [ТС]     Визуализация графов
  #39

Не по теме:

Цитата Сообщение от eugrita Посмотреть сообщение
Другими словами, граф 1-й раз как-то загружается. Юзер распутывает клубок расставляя вершины по своему усмотрению. И следующее сохранение в файл и следующая загрузка уже будут с "хорошими" координатами.
Запарится распутывать.

Yandex
Объявления
25.06.2014, 21:22     Визуализация графов
Ответ Создать тему
Опции темы

Текущее время: 06:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru