2014-12-28 111 views
4

我想創建一個使用Quil生成jpg圖像的命令行應用程序。我打算編寫幾個通用圖像處理函數來混合和匹配(一些繪圖形狀和一些處理像素數組)。Clojure,Quil:創建/調試通用函數

我想要做的一個簡單示例是創建一個繪製圓的函數,然後創建一個將抖動算法應用於像素數組的第二個函數。

(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函數似乎只能在草圖宏中運行。這意味着我自己的內部函數不能直接調用(必須從草圖宏觸發的draw函數中調用),從而使調試成爲可能/不可能。

我該如何去創建和調試這樣的泛型函數?我堅持有代表我的草圖調用函數還是有另一種方式?

也有可能Quil不是我的項目的正確工具。我正在考慮直接使用java /處理類。

我的開發環境是Emacs + Cider。

感謝

回答

1

我已經創建了一系列的命令行的https://github.com/rogerallen/qeom

運行我開發&迭代在Emacs +蘋果酒,只是重新編譯draw功能看到的結果更新直播奎爾草圖在草圖窗口中。

我用了一個原子(defonce dump-image-count (atom 1))控制在平局功能將保存圖像:

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

希望這有助於。

+0

謝謝羅傑,會試試看。 – Daneel