以前、Schemeで描画するときに座標の取り方を指定できるようにしました。
【奥村本】座標の取り方を変えて線を描画する - 仮想計算機構
これを利用して色々な線を描画していきます。今回は曲線!ってことで以下を参考にしました。
周期関数による幾何学模様の生成とその変換
描くのは論文中の2.2の直進形汎トロコイドです。
コードは以下の通りです。
(include "grBMP.scm") (include "line.scm") (include "circle.scm") (include "window.scm") (use math.const) (define (F1-base a b k) (lambda (t) (+ (* a (sin (* b t))) (* k t))) ) (define (F2-base a c) (lambda (t) (* a (cos (* c t)))) ) (gr_window -10 -10 100 10 #f) (define n_loop 500) (define dt 0.1) (letrec ((a -2) (b 3) (c 1) (k (/ pi 2)) (F1 (F1-base a b k)) (F2 (F2-base a c))) (do ((i 0 (+ i 1)) (t 0 (+ t dt))) ((= i n_loop) (gr_BMP "test.bmp")) (gr_wline (F1 t) (F2 t) (F1 (+ t dt)) (F2 (+ t dt)) WHITE) ) )
以下、実行結果になります。
変な宇宙人の集団みたいです。
次にパラメータc=2に変更して実行したのが次の画像です。
最後にパラメータをn_loop=1800, a=-3, b=2, c=0.3, k=pi/6 に変更して実行します。実行結果は以下のとおりです。
宇宙人の次はワカメみたいなものができてしまいました。
パラメータいじると面白そうです。