Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/163: Рейтинг темы: голосов - 163, средняя оценка - 4.52
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

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

10.02.2013, 19:55. Показов 31032. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем есть такой пакет http://ru.wikipedia.org/wiki/Graphviz

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

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

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

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

Возможно кто-то имел дело с этой библиотекой и знает как её использовать?
2
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2013, 19:55
Ответы с готовыми решениями:

Теорие графов. Композиция двух неор. графов.
Здравствуйте. Прошу помощи уже здесь :| (old topic)... Прошу помочь с составлением алгоритма "Композиции двух неориентированных...

Представление графов С++
#include <iostream> #include <vector> using namespace std; int n; int m; vector<int> *adj; vector<bool>...

Представление графов С++
Считывания графу из входного файла. На вход подается текстовый файл следующего вида: n m v1 u1 v2 u2 .... vm um

38
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
18.02.2013, 22:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
но как к примеру сделать свой редактор, что бы пользователь мог "двигать" узлы, а не имел просто статическую картинку?
QGraphicsScene позволяет "двигать" графические элементы сцены

Не по теме:

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

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.02.2013, 22:51  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
QGraphicsScene позволяет "двигать" графические элементы сцены
Это чЁ такое?
Qt класс или обвертка Qt над тем же GraphViz ?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
а вообще господа пишущие на js посмеются над таким заданием
А какое тут задание ?
Тут вопрос прикрутки либы ... думаю использовать было бы не проблема...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 22:52  [ТС]
Хорошо если нельзя получить координаты напрямую с помощью прикрутки либы к С++ программе то как ?

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

Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.02.2013, 18:10  [ТС]
Для того что бы попробовать реализовать алгоритм визуализации самому создал новую тему Визуализация графа (реализация алгоритма)
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
13.05.2013, 15:38
Цитата Сообщение от Avazart Посмотреть сообщение
Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
Если просто попользоваться, то довольно удобен yEd. А для встраивания в программу я бы тоже раскладку делал на основе graphviz, он умеет отдавать координаты для вершин и для контрольных точек сплайнов, через которые ребра представляются.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 15:44  [ТС]
Цитата Сообщение от kamre Посмотреть сообщение
то довольно удобен yEd
Чет не видел там варианта для С++, а внешне можно и GraphViz использовать только это порождает другие проблемы.

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

Читай тему сначала ...
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
13.05.2013, 16:31
Цитата Сообщение от Avazart Посмотреть сообщение
Чет не видел там варианта для С++
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.

Цитата Сообщение от Avazart Посмотреть сообщение
Под Windоws, GraphViz не получается использовать как библиотеку в том то и проблема
Можно вызывать как подпроцесс и парсить его выход, если уж совсем все так плохо.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 16:38  [ТС]
Цитата Сообщение от kamre Посмотреть сообщение
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.
И что оно оптимально расставляет узлы как graphviz ?

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


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

Насчет готовых парсеров не слышал вообще, в любом это через десятую дорогу.
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:43
Avazart, Хочу напомнить вам, вдруг вы забыли, что в 3D граф куда легче отобразить, да и там вообще можно всегда без пересечений сделать, тем более 3-х мерная проволочная проекция крайне проста в реализации.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 17:47  [ТС]
Ага и насколько это будет наглядно, a ?

Все делается ради простоты и наглядности ...
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:50
Avazart, это будет крайне наглядно и очень удобно. Лично моё мнение, так как сам уже делал.

Добавлено через 1 минуту
Avazart, http://www.youtube.com/watch?v=FjY3EPR369o
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 17:55  [ТС]
Ну и где тут наглядность ? Красиво да, но явно не наглядно...

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

Да и то что делает graphviz тоже можно реализовать только это затраты и время, при том что уже это реализовано и работает по крайней мере в Linux
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:00
Цитата Сообщение от Avazart Посмотреть сообщение
Ко всем проблемам добавляется еще и 3D графика ...
Это обычный 3д разворот вокруг 3 осей, сдвиг и умножение на число и перспективное преобразование, ничего более. В 3D тут нет проблем.
Такая работа с нуля пишется за час.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 18:03  [ТС]
Ага а кто вершины расставлять будет в 3d проекции ?
Насколько это будет наглядным если необходимо буде отображать надпись возле каждой вершины,ребра ?
Как дать возможность двигать элементы пользователю в 3D ?
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:19
Цитата Сообщение от Avazart Посмотреть сообщение
Ага а кто вершины расставлять будет в 3d проекции ?
Вы хотите сказать, вам сложно взять обычное распределение координат вершин в пространстве ?
"наглядность" заключается в равномерности распределения, с учётом min расстояния между парой вершин графа.
Алгоритмом Флойда вам в помощь, тут O(N^3).

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

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

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2014, 21:22

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

Теория графов
Есть задание. найти максимальное и среднее расстояние между центральными вершинами неориентированного графа. 1 Что такое центральные...

Реализация графов
Помогите пожалуйста!!!!! как написать программу на Си ++ на эту тему :реализация различных типов графов и операций над ними. спасибо...

Визуализация
Добрый день, подскажите пожалуйста, чем лучше отображать 2d графику - хочу поиграться с алгоритмами генерирования карт и хочется видеть...

Визуализация
Здравствуйте, уважаемые форумчане. Хотелось бы узнать, возможно ли визуализировать(создать несколько членов, которые будут отвечать за...


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru