This implementation of the Heighway dragon starts with square, that is hidden by being transparent, the rotations scaling and translations used make this solution similar to the paper folding solution.
# dragon.rb ruby-processing NB: :alpha is now implemented in ruby-processing (since 8 Nov 2009) the brightness, of dragon in the start rule has no effect, but the DSL doesn't like to call rules with no arguments.
load_library 'context_free'
def setup_the_dragon
@dragon = ContextFree.define do
rule :start do
dragon :brightness => 1.0
end
rule :dragon do
split do
fractal :hue => 0, :brightness => 1.0, :saturation => 1.0
rewind
fractal :hue => 0.2, :brightness => 1.0, :saturation => 1.0, :rotation => 90, :x => -0.4
rewind
fractal :hue => 0.7, :brightness => 1.0, :saturation => 1.0, :rotation => 270, :x => -0.4, :y => -0.33
rewind
end
end
rule :fractal do
square :alpha => 0.01
split do
fractal :size => 1/Math.sqrt(2), :rotation => -45, :x => 0.25, :y => 0.25
rewind
fractal :size => 1/Math.sqrt(2), :rotation => 135, :x => 0.25, :y => 0.25
rewind
end
end
end
end
def setup
size 800, 800
setup_the_dragon
smooth
draw_it
save_frame("dragon.png")
end
def draw
# Do nothing.
end
def draw_it
background 0
@dragon.render :start, :size => width*0.6, :stop_size => 2,
:start_x => width*0.6, :start_y => height*0.6
end
No comments:
Post a Comment