#/*********************************************************** # dragon2.rb -- ドラゴンカーブ #***********************************************************/ require "plotter.rb" ORDER = 10 RIGHT = 0; LEFT = 1 fold = Array.new(ORDER).fill(0) fold[ORDER-1] = 1 gr_on move(200, 140) dx = 0; dy = 2; draw_rel(3 * dx, 3 * dy); p = 0 for k in 1..ORDER fold[p] = LEFT; q = 2 * p for i in p..q case fold[q - i] when RIGHT: fold[i] = LEFT; dx1 = -dy; dy1 = dx when LEFT: fold[i] = RIGHT; dx1 = dy; dy1 = -dx end draw_rel(dx + dx1, dy + dy1) draw_rel(3 * dx1, 3 * dy1) dx = dx1; dy = dy1 end p = q + 1 end gr_off exit 0