我想创建一个使用 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。

谢谢

最佳答案

我创建了一系列从 https://github.com/rogerallen/qeom 的命令行运行的 quil 草图

我在 emacs+cider 中开发和迭代,然后重新编译 draw 函数以在草图窗口中实时查看结果更新。

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

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

希望这可以帮助。

关于debugging - Clojure, Quil : Creating/debugging generic functions,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27676517/

10-11 15:26