Ну что, я дописал до того места, где оно уже рисует картиночки. Но
работы там еще много. Несмотря на это я не утерпел выложить это на GitHub, пропиарить тут и еще немного написать всякого текста про это дело.
После
некоторого анализа PieSpy и его описания я решил, что все-таки
использовать его код совсем не зазорно, так как его автор(ы)
использовали множество других работ в области отображения графов. И
вообще, их методика в корне отличалась от того, что мне представлялось.
Я
думал, что граф можно нарисовать путем нахождения какой-то вершины и
потом рекурсивно обходить их, как-то находить еще свободное направление
на листе и рисовать там связанные узлы. Но тут все совершенно иначе -
они просто берут список всех вершин и случайным образом их "рассыпают".
Затем алгоритм делает несколько итераций, во время которых, во-первых,
соседние ноды "отталкиваются" и становятся дальше, во-вторых, связанные
ноды "притягиваются". Таким образом, даже если группа вершин оторвана от
основного графа, она все равно оказывается отображенной, связанные ноды
находятся довольно-таки близко, в общем, довольно неплохая картинка
получается. И даже с моей идеей обображать "очень одинокие ники",
которые говорили сами с собой это прекрасно работает.
Пример
картинки, правда, показывает, что где-то в поиске связей между никами
есть ошибки, это раз. Во-вторых, он показывает, что модуль GD::Simple
плохо работает с юникодом. Я еще заметил модуль Imager, нужно будет
проверить, как там дела. Он, вроде-бы и больше возможностей дает,
наверняка можно будет делать связи между нодами полупрозрачными, чтобы
не мешать чтению ников. Также требуется улучшить поиск связей между
никами, так как в данный момент он просто проверяет наличие прямых
упоминаний.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий