Каковы некоторые хорошие алгоритмы для проведения линий между узлами графика? [закрытый]

19
задан ApplePieIsGood 17 March 2010 в 04:35
поделиться

3 ответа

Если ваши диаграммы не безумно полны, вам не нужно для этого излишне замысловатый алгоритм, а просто руководствуйтесь здравым смыслом.

  1. Покройте поверхность прямоугольной сеткой, а затем найдите способ соединить прямоугольники с прямыми линиями вдоль линий сетки с минимальным количеством углов: если прямоугольники не находятся на одной линии сетки и вам все равно, где вы соединить вам понадобится один угол, если между ними нет другого узла. Если есть, например, узлов в пути нужно еще хотя бы на один угол.

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

  3. Для дополнительного удовольствия скруглите углы с учетом длины обеих ног и проверки пересечения с другими объектами на поверхности. Я бы использовал круги под углом 90 ° и отрегулировал радиус кругов (очевидно, не то, что было сделано выше) - для более длинных ног радиус должен быть больше. Может быть, тот инструментарий, который вы используете, поможет вам в этом.

8
ответ дан 30 November 2019 в 05:20
поделиться

Знакомы ли вы с Graphviz? Я не уверен, насколько "динамичны" и возобновляемы алгоритмы компоновки, но это может быть хорошей отправной точкой.

0
ответ дан 30 November 2019 в 05:20
поделиться

Почему бы вам не заглянуть в исходный код Dia, чтобы посмотреть, как они это делают? http://live.gnome.org/Dia/Download

0
ответ дан 30 November 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: