2015-04-07 107 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的