Clojure,Quil:创建/调试通用函数

时间:2014-12-28 12:49:48

标签: debugging clojure read-eval-print-loop quil

我想创建一个使用Quil生成jpg图像的命令行应用程序。我计划编写一些通用的图像处理函数来混合和匹配(一些fn绘图形状和一些操纵像素阵列)。

我想要做的一个简单示例是创建一个绘制圆的函数,然后创建第二个将抖动算法应用于像素数组的函数。

(defn draw-circle [x y] ...) ;; e.g. internally uses Quil draw functions.

(defn apply-dither [pixels] ...) ;; e.g. internally uses Quil color functions on the pixels array.

(defn draw []
(draw-circle 100 100)
(apply-dither (pixels))
...)

(defsketch sketch
:draw draw)

让我有点悲伤的是,所有Quil函数似乎只在一个草图宏中运行。这意味着我自己的函数内部依次使用Quil函数不能直接调用(必须从草图宏触发的绘图函数调用),从而更难/不可能从repl中单独调试和运行它们。

如何创建和调试此类通用函数?我是不是代表我做了草图调用函数,还是有另一种方式?

Quil也有可能成为我项目的合适工具。我考虑直接使用java /处理类。

我的开发环境是Emacs + Cider。

由于

1 个答案:

答案 0 :(得分:1)

我创建了一系列quil草图,这些草图是从https://github.com/rogerallen/qeom

的命令行运行的

我开发了&在emacs + cider中迭代并重新编译draw函数以在草图窗口中查看结果更新。

我使用原子(defonce dump-image-count (atom 1))来控制绘制函数何时保存图像:

(defn draw []
   ...
   (when (> @dump-image-count 0)
      (save-frame "q007-dump-####.png")
      (swap! dump-image-count dec)))

希望这有帮助。