2015-04-07 65 views
2

在編寫最近問題Prolog Constraint Processing : Packing Squares的答案時,我想要直觀地看到Prolog + clpfd給我的答案。使用SVG進行可視化

要做到這一點我寫了一些骯髒的Prolog代碼使用Prolog的內置發光適合ImageMagick命令「謂詞」 format/2write/1,像這樣:

drawBoxesWithIM_at_pix(Sizes,Positions,P) :- 
    Colors = ["#ff0000","#00ff00","#0000ff","#ffff00","#ff00ff","#00ffff"], 
    write(' -strokewidth 2 -stroke white'), 
    nth1(N,Positions,Xb+Yb), 
    nth1(N,Sizes, Wb*Hb), 
    nth1(N,Colors, Color), 
    format(' -draw "fill ~sb0 roundrectangle ~d,~d ~d,~d ~d,~d"', 
      [Color, Xb*P+3,Yb*P+3, (Xb+Wb)*P-3,(Yb+Hb)*P-3, P/2,P/2]), 
    false. 
drawBoxesWithIM_at_pix(_,_,_). 

快速劈效果很好,然而我覺得我寫的代碼感覺很臃腫,有點髒......我想找一個更具說明性的替代方法來做2D可視化。我覺得SVG可能是一個不錯的選擇。

現在,SVG基於XML,幾個Prolog系統提供了用於處理XML的庫,作爲其標準庫的一部分。

SVG有Prolog庫嗎?或其他合適的具有Prolog綁定的2D /(3D)數據可視化框架/工具?

你看到了什麼合理的方法? 預先感謝您!

+1

1,對於CLP(FD)任務和搜索過程的良好可視化,絕對值得注意。請務必查看Neumerkel等人的[*可視化解決方案與觀衆*](http://www.complang.tuwien.ac.at/ulrich/papers/PDF/wlpe97.pdf)的一些想法。 – mat

回答

2

SWI-Prolog有一包接口到.dia,一個用於graphml文件,一個用於graphviz的