1

Я пишу приложение Java, которое помогает преобразовать недетерминированные автоматы в детерминированный (im перевод с французского). Ну, алгоритм, который делает это, не является проблемой, так как есть правила для подражания.компилятор automata, как мне сделать эту диаграмму, чтобы линии не пересекались?

Но у меня возникли проблемы с выяснением того, как будет работать графический интерфейс ... Я понял, как рисовать круги и стрелы и все (его еще не завершено, но я не спрашиваю об этом). Что я спрашиваю здесь, как бы я быть в состоянии написать программу, которая выясняет, какой круг должен быть составлен, где, так что схема будет выглядеть хорошо прорисованы, без пересечений:

Так что я хочу это для него, как тот, что слева. Интеграция не является основной проблемой, а именно, как программа будет выделять макет в первую очередь.

сейчас я знаю, как правило, я должен опубликовать некоторые коды и показать усилие и все, кроме той части, которую я уже закодировал, у меня нет проблем с тем, как ive сказал ... авто-часть чертежа - это первый раз, когда я прихожу на что-то где я даже не знаю, что попробовать и код:/Я мозг об этом в течение довольно долгого времени безрезультатно. подумал о макетах, рекурсивных алгоритмах, алгоритмах ИИ ... я просто не знаю, что они ищут здесь.

Есть ли какой-то трюк? cuz ive видел это в других программах раньше. Есть ли какая-то информация, которая, кажется, отсутствует? все, что я мог прочитать, чтобы помочь с этим, было бы очень много.

+0

Термин, который вы ищете, - это рисунок _planar_. Не все графики являются плоскими и могут быть нарисованы без пересечений. [yFiles] (http://www.yworks.com/yfiles) алгоритм ортогонального макета будет рисовать все плоские графики без пересечений, однако иногда это выглядит хуже, чем более простые рисунки с несколькими пересечениями. – Sebastian

ответ

2

Вы должны использовать существующие библиотеки. Например, yFiles.

+0

Это на самом деле указывало мне в правильном направлении, хотя его не было открытым исходным кодом или бесплатным ... Я теперь, по крайней мере, знаю, что им нужно, я думаю, что в конечном итоге буду использовать JUNG http://jung.sourceforge.net/ – vlatkozelka