我想创建一个使用 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。
谢谢
我创建了一系列从命令行运行的 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)))
希望这有帮助。