2005/11/20

SICPの図形言語



ようやくここまでたどり着いた。ひとつの通過点としてコードも晒しちゃう。大きくすると手がつながってないけど気にしない。

この図形言語が取り上げられている2.2.4項は、練習問題そのものは難しくない。たぶん、実際にグラフィックを描く面倒さを乗り越えることと、低レベルから高レベルまできっちり抽象化が分離されていることを味わうところがみそなんだと思った。

グラフィックを描く面倒さは、Gauche の OpenGL ライブラリがなければ乗り越えられなかったはず。着手したときは実際に図形を描かずに妥協するつもりでいたこともあって、segments をリストとして吐き出し、その segments のリストを OpenGL で描画しているだけのお気楽な実装です。したがって、SICP の説明に完全に準じたコードではありません。また、ベースになっている人型の図形(なんで wave なんだろう?)や繰り返しの回数もコードに埋め込んだ状態なので、別のものに取り替えたり、はじっこのへげへげのところをいっそう細かくしたかったりする場合は、コードに直接手を付ける必要があります。教科書の例題なので、むしろソースをコピペしてさくっと実行できるほうがいいと考えました。うそです。OpenGL は何度遊んでみてもかんどころがわからないので、gauche-gl のリファレンスマニュアルで紹介されている例をそのまま使わせていただいたんですが、その描画している部分をうまく分離できなかったというのが本当の理由です。

No comments :