在編寫最近問題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