суббота, 11 июля 2015 г.

Про Perl, продолжение

Ну что, я дописал до того места, где оно уже рисует картиночки. Но работы там еще много. Несмотря на это я не утерпел выложить это на GitHub, пропиарить тут и еще немного написать всякого текста про это дело.

После некоторого анализа PieSpy и его описания я решил, что все-таки использовать его код совсем не зазорно, так как его автор(ы) использовали множество других работ в области отображения графов. И вообще, их методика в корне отличалась от того, что мне представлялось.

Я думал, что граф можно нарисовать путем нахождения какой-то вершины и потом рекурсивно обходить их, как-то находить еще свободное направление на листе и рисовать там связанные узлы. Но тут все совершенно иначе - они просто берут список всех вершин и случайным образом их "рассыпают". Затем алгоритм делает несколько итераций, во время которых, во-первых, соседние ноды "отталкиваются" и становятся дальше, во-вторых, связанные ноды "притягиваются". Таким образом, даже если группа вершин оторвана от основного графа, она все равно оказывается отображенной, связанные ноды находятся довольно-таки близко, в общем, довольно неплохая картинка получается. И даже с моей идеей обображать "очень одинокие ники", которые говорили сами с собой это прекрасно работает.




output

Пример картинки, правда, показывает, что где-то в поиске связей между никами есть ошибки, это раз. Во-вторых, он показывает, что модуль GD::Simple плохо работает с юникодом. Я еще заметил модуль Imager, нужно будет проверить, как там дела. Он, вроде-бы и больше возможностей дает, наверняка можно будет делать связи между нодами полупрозрачными, чтобы не мешать чтению ников. Также требуется улучшить поиск связей между никами, так как в данный момент он просто проверяет наличие прямых упоминаний.

Комментариев нет:

Отправить комментарий