A young person’s guide to CFDG
と、あまり上から目線で書くつもりはないのだけど、最近Context Freeをずっと触っているので、CFDG関連のリソースをまとめてみます。公式サイトのドキュメントが充実しているのでそればかりです。
本体のLesson, Lesson2
[Help]-[Lesson]で起動
最初はここから。Lesson2は途中で終わっているけど気にしない。
Design ideas
http://www.contextfreeart.org/mediawiki/index.php/Design_ideas
より実践的なテクニックはこちらで。大体のことはできるようになる。この辺りからじゃんじゃん作りましょう。
Reference Card
http://www.contextfreeart.org/mediawiki/index.php/Reference_Card
文法的に不安になるときはこちらが便利。自分の場合PDFを印刷してPCの傍らに置いています。
CFDG HOWTO
http://www.contextfreeart.org/mediawiki/index.php/CFDG_HOWTO
更に詳細な仕様を見たい場合はこちらを。まあほとんど見ないけど。そうは言っても、読んでいくと新しい発見なんかもあって、自分の場合target hueとか全然知らなかった。
http://www.contextfreeart.org/mediawiki/index.php/Shape_adjustments
CFDG About
http://www.contextfreeart.org/mediawiki/index.php/Context_Free_Art:About
個人的には、CFDGは再帰の終了条件(というか描画の終わり方)が重要だと思っているのだけど、それに関して
5. Continue from step 2 until the to do list is empty, or everything on it is too small to be seen.
という記述が(ひっそりと)書かれている。
これは、
- 描画するものがなくなるか
- 見えなくなるまで小さくなったとき
ということである。
コードで書いてみると、、、
// 描画するものがなくなるパターン // ruleを複数記述して一つは何も描画しないものを用意する startshape main rule main { foo {} } rule foo { CIRCLE {} foo {x 1} } rule foo .1 { }
// 見えなくなるまで小さくなるパターン // 再帰する度にサイズを小さくしている startshape main rule main { foo {} } rule foo { CIRCLE {} foo {x 1 s .5} }
CFDGに条件式が文法的にサポートされていれば確かにこんな記述にはならないのだけど、この辺りが世のプログラム言語とあまりに違い過ぎて、個人的には面白いと思うところです。