sketchで遊んでみた

ジェネラティブアートとかいうカッコイイやつをやってみたかったのでやった。

ジェネラティブアートとは、

コンピュータソフトウェアのアルゴリズムや数学的/機械的/無作為的自律過程によってアルゴリズム的に生成・合成・構築される芸術作品を指す。

というものらしい。

common-lisp の勉強も兼ねて、 vydd/sketch の環境構築をしてサンプルを動かしてみる。


Ubuntu 18.04で環境構築はそんなに難しくない。

$ sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libffi-dev

これで必要なものが入った。

次にサクッと common-lisp プロジェクトを立ち上げる。

これを参考にコマンドを叩いた。 clfreaks/techbookfest6#Make-Project

$ ros install cl-project
$ cd ~/.roswell/local-projects
$ make-project sketch-study
$ emacs .

asd はこんな感じ。

(defsystem "sketch-study"
  :version "0.1.0"
  :author "takeokunn"
  :license ""
  :depends-on (:sketch :black-tie)
  :components ((:module "src"
                :components
                ((:file "main"))))
  :description "sketch study")

main.lisp はこんな感じ。

(defpackage sketch-study
    (:use :cl :sketch :black-tie)
    (:export :tutorial :first-sketch))
(in-package :sketch-study)

(defsketch tutorial ()
    (rect 100 100 200 200))

(flet ((noise (x y)
           (random 1.0)))
    (defsketch first-sketch
        ((sketch:title "first your sketch")
            (sketch:width 800)
            (sketch:height 600))
        (dotimes (x 800)
            (dotimes (y 600)
                (sketch:with-pen (sketch:make-pen :fill nil
                                     :stroke (sketch:hsb 0 0 (noise x y)))
                    (sketch:point x y))))))

これでできた。あとは sbcl で以下を叩けば動く。

CL-USER> (ql:quickload :sketch-study)
CL-USER> (make-instance 'sketch-study:first-sketch)