2010-06-01から1ヶ月間の記事一覧
問題 ペインタを水平に逆転する変換 flip-horiz と、ペインタを反時計回りに180度と270度回転する変換を定義せよ。 解答 transform-painter 手続きを使えば一発ですな。 以下の手続きを、前エントリで分離した painter.scm に追記する。 ;水平に逆転する変換…
さて、前エントリまででものすごくたくさんのコードを生成したわけだが、ちょっとカオス化してきたのでファイルを分割してみようと思う。と言っても難しく考えるわけじゃなく、ただ各種手続きを複数ファイルに分割し、main.scm で load するだけの単純なもの…
前回のエントリまでで、やっと実際の描画処理までが繋がったけども、beside とか below とか flip-* 系の実装がまだ空中に浮いたままの状態なんすよ。 これを解決するのが今回のエントリとなる。 肝となる考え方は、ペインタを新しく指定するフレームに沿う…
さ、やっと『ペインタ』のおでましだ。ペインタはフレームを引数として受け取り、そのフレームに合うように描画しようとする手続だ。 ここで、やっとgauche-glとの融合がなされる・・・長かった。。 SICPで記述されているペインタの例は「線画のペインタ」だ…
今度は『フレーム』の概念の説明。SICPによると、ペインタの実装方法と組み合わせ方法を考える前に『フレーム』を考えなきゃならんのだって。・・・知らんがな(´・ω・`)。 フレームを構成するのに必要な要素は、次の3つ。 ・原点ベクタ:平面の絶対原点から…
次の「高階関数」のサブセクションでは、「ペインタが手続だからできること」を解説してる風。 ;四種類の「ペインタを生成する手続き」を引数で受け取って、 ;左上、左下、右上、右下に描画行うペインタの生成手続きを返却する。 ;(その手続は、引数として…
前エントリの wave4 は、まず wave2 を定義してから、beside と絡めて生成しているが、wave2 を生成しなくても生成できたりする。 (define (flipped-paires painter) (let ((painter2 (beside painter (flip-vert painter)))) (below painter2 painter2))) (…
記述の仕方にホント悩む。どう書けば俺自身が理解できる進め方にできるだろうか。。 まだ、まとめきれてないが、とりあえずアップしちゃう。あとでまた追記します。 手を動かしてやってみよう。 この図形言語のセクションでは、次の「言語の機能」を使ってそ…
図形言語のセクションがいまいちしっかりと理解できていない原因を考えてみた。 従来のセクションは、セクションの記述内容を読む、あるいは少しだけ手を動かしてみて、その上で問題を解けばほぼ理解できた。 が、今回のセクションはメインストリームがセク…
やばい。。ちゃんと理解できてねぇ。。 参考書の該当セクションの内容、ちゃんと追った方がいいかな。。