在编写最近问题Prolog Constraint Processing : Packing Squares的答案时,我想要直观地看到Prolog + clpfd给我的答案。使用SVG进行可视化
要做到这一点我写了一些肮脏的Prolog代码使用Prolog的内置发光适合ImageMagick命令“谓词” format/2
和write/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,对于CLP(FD)任务和搜索过程的良好可视化,绝对值得注意。请务必查看Neumerkel等人的[*可视化解决方案与观众*](http://www.complang.tuwien.ac.at/ulrich/papers/PDF/wlpe97.pdf)的一些想法。 – mat