painter のプログラムは奥乃宛にメイルでも送付して下さい. (output-canvas 'foo.ps)で foo.ps というポストスクリプトファイルが作成されますので, そのファイルをプリンタに出力して下さい.
例による Hilbert curve の説明
4つの基本形
各基本形に書かれている4つの小さな領域は, 分解の仕方です. 例えば, 基本形Aは, 次のレベルでは4つの領域に分解され, それぞれの領域に図に示されたように基本形 D, A, A, B が書かれます.
Scheme プログラムの書き方
(define (hilbert-a X0 Y0 X1 Y1 i)
(let ((xs (/ (+ (* 3.0 X0) X1) 4.0))
(ys (/ (+ (* 3.0 Y0) Y1) 4.0))
(xm (/ (+ X0 X1) 2.0))
(ym (/ (+ Y0 Y1) 2.0))
(xl (/ (+ X0 (* 3.0 X1)) 4.0))
(yl (/ (+ Y0 (* 3.0 Y1)) 4.0)) )
(if (= i 0)
(list (make-vect xl yl) (make-vect xs yl)
(make-vect xs ys) (make-vect xl ys) )
(append (hilbert-d xm ym X1 Y1 (- i 1))
(hilbert-a X0 ym xm Y1 (- i 1))
(hilbert-a X0 Y0 xm ym (- i 1))
(hilbert-b xm Y0 X1 ym (- i 1)) ))))
レベルダウンの様子
例による Peano curve の説明
ペアノ曲線は Hilbert curve と同じ考えで作成できる. 上記は8つのパタンで構成.
例による Koch curve の説明
Scheme プログラムの書き方
例による Sierpinski's Gasket の説明
例による Mandelbrot Curve の説明
(paint g1 (procedure->painter mandelbrot))
(define (mandelbrot x y)
(if (zn+1=zn+(x + iy) が収束)
0 ; 黒色
255 ; 白色
))
また, コースウェアは ArtDigita University の
コースウエア
のページにある Problem Set 4 のプログラム (
go.scm,
hend.scm,
hutils.scm,
prmpnt.scm
) を使用して下さい. (動作確認済み)
画像は pgm 形式です. 例は, einstein_tongue.pgm, orida-sensei.pgm.