- 作者: キースボール,Keith Ball,佐藤かおり,佐藤宏樹
- 出版社/メーカー: 青土社
- 発売日: 2006/12/01
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (9件) を見る
こんなです。左が 3次、右が 5次です。
描画には自作の Gem 'oekaki' を使いました。最新バージョンでタートルグラフィックスをサポートしています(参照)。
oekaki | RubyGems.org | your community gem host
GTK+でお絵かきしてみた(Ruby) - Camera Obscura
コード。
require 'oekaki' Oekaki.app width: 420, height: 420, title: "Turtle" do draw do clear t = Oekaki::Turtle.new t.color(0, 0xffff, 0) drawing = lambda do |n, p1, p2| v1 = p2 - p1 v2 = Vector[-v1[1], v1[0]] if n == 1 l = v1.norm / sqrt(2) t.move(*p1.to_a) t.dir = v1.normalize t.left(45) t.forward(l) t.right(90) t.forward(l) else drawing[n - 1, v3 = p1 + v2 / 2, p1] drawing[n - 1, v3, v4 = v3 + v1 / 2] drawing[n - 1, v4, v5 = v4 + v1 / 2] drawing[n - 1, p2, v5] end end drawing[5, Vector[-200, -200], Vector[200, -200]] end end
ゴシック・フリーズ(p.102~)。それぞれ 1, 2, 3, 6次。
コード。
require 'oekaki' Oekaki.app width: 420, height: 420, title: "Turtle" do draw do clear t = Oekaki::Turtle.new t.color(0xffff, 0x45ff, 0) #orangered t.move(-200, -200) t.left(45) drawing = lambda do |n, l| if n == 1 t.forward(l) else drawing[n - 1, l / 3] t.left(90) drawing[n - 1, l / 3] t.right(90) drawing[n - 1, l / 3] t.right(90) drawing[n - 1, l / 3] t.left(90) drawing[n - 1, l / 3] end end drawing[6, 400 * sqrt(2)] end end
アニメーション版も作ってみました。コードはこちら。
タートルグラフィックスによるその他の再帰曲線については、こちらもどうぞ。