C++ から呼び出せる優れたグラフ レイアウト ライブラリはありますか?
-
22-09-2019 - |
質問
(有向) グラフは有限オートマトンを表します。これまで、私のテスト プログラムはテスト用にドット ファイルを書き出していました。これは、回帰テスト (検証された出力ファイルを Subversion に保存し、変更があったかどうかを尋ねる) と視覚化の両方に非常に適しています。ただし、いくつかの問題もあります...
基本的に、C++ から呼び出し可能で、状態と遷移のレイアウトを計画しますが、描画は私に任せるもの、つまり、好きなように描画したり、GUI (wxWidgets) ウィンドウ上に描画したりできるものが必要です。
また、商用利用を許可するライセンスも必要です。現時点ではその必要はありません。オープン ソースとしてリリースする可能性も十分にありますが、ATM のオプションを制限したくありません。
GraphViz の問題は、(1) Windows 上でソースからビルドすることに関する警告、(2) レンダリングと解析のための不要な依存関係、(3) 純粋にレイアウト専用の文書化された API が (おそらく) 欠如していることです。
基本的に、状態 (境界四角形のサイズ) と遷移を指定し、各遷移の状態とウェイポイントの位置を読み取って、それらの座標に基づいて自分で描画できるようにしたいと考えています。トランジションの注釈をどのように処理すべきかはよくわかりませんが、それらの境界ボックスのサイズを指定し、それらをトランジションに関連付け、位置を読み出すための何らかの規定が必要です。
これらの要件を処理できるライブラリを知っている人はいますか?
私は自分自身で何かを実装することに必ずしも反対しているわけではありませんが、今回の場合はできれば避けたいと思っています。
解決 4
、私は実際にそれらのいずれかを受け入れることができません。私はまだかかわらず、検索してきます。
私が見つけたことの一つは、 AGLO のです。コードGPLのV1であるが、必要に応じて最初から再実装する簡単十分でなければならないようなアルゴリズムを記述する論文が存在する。
「描画有向グラフのための技術」 - - <のhref =「http://www.graphviz.org/Documentation.php」のrel = "nofollowをから入手可能Gansner、Koutsofios、北とVoとの論文もありますnoreferrer ">ここにGraphvizのサイトの上ます。
私はまた、BSDライセンス(しかしJavaの) JGraphはのをよく見てきました。
一つの方法または他の、私はホイールを再実装されるかもしれないように見える、そうでない場合は、実際に再発明し、それをます。
他のヒント
うーん、GDToolkit (または GDT) は問題ないようです。の画像の多くは、 チュートリアル 見た目はかなりいいし、使い方もそれほど複雑ではないようだ。
編集:しかし、ライセンスを確認すると、商用ソフトウェアのようです:-(。おっと!
私は今年初めに同様の問題に対処していました。ただし、決定のための重要な入力パラメータの 1 つは、予想されるノード数です。
私はブラウザを GUI として使用することに決めたので、優れた Javascript ライブラリを探しました。 ワイヤーット, 、技術的なレイアウト (およびドラッグ アンド ドロップによる編集や「オンザフライ」レイアウト) に非常に適しています。スレッドで小さな Web サーバーを実行することで、これを C++ に簡単に接続できます (いずれにせよ、GUI 用の何らかのイベントループ/スレッドものが必要になります)。
まあ、私の2セントだけです。
ここで比較・検索機能を持つグラフLibsのの良いコレクションです:
http://gvsr.polytech.univ-nantes.fr/GVSR/タスク?アクション=ブラウズ#の
たぶん、あなた、あなたのために合うLIBを見つけます。