Experiments with ruby-processing (processing-2.2.1) and JRubyArt for processing-3.0

Sunday 8 November 2009

Heighway Dragon in ruby-processing context free DSL

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

Followers

Blog Archive

About Me

My photo
I have developed JRubyArt and propane new versions of ruby-processing for JRuby-9.1.5.0 and processing-3.2.2