Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Frac_Canv
- #================================================================
- def initialize(shapes, i_lim, start_num)
- @shapes = shapes
- @i_lim = i_lim
- @start_num = start_num
- @p_A = [0,@start_num]
- @p_B = [@start_num,0]
- @running_width = 0
- @running_height = 0
- @max_height = start_num
- @max_width = start_num
- $PHI = 1/(((5 ** 0.5) +1)/2)
- end
- #================================================================
- def calc_A(length, prev_length)
- ret_a = []
- @running_width = @running_width + length
- @max_width = @running_width if @running_width > @max_width
- puts "Max Width Exceded" if @running_width > @max_width
- @running_height = @running_height - (prev_length - length)
- ret_a = [@running_width, @running_height]
- puts ret_a
- return ret_a
- end
- #================================================================
- def calc_B(length, prev_length)
- ret_b = []
- @running_width = @running_width - (prev_length - length)
- @running_height = @running_height + length
- ret_b = [@running_width, @running_height]
- puts ret_b
- return ret_b
- end
- #================================================================
- def recalc_length(length, i)
- ret = $PHI**i
- ret = ret * @max_height
- return ret
- end
- #================================================================
- def do_work()
- canvas = TkCanvas.new(:width=>800, :height=>800).pack('fill' => 'both', 'expand'=>true)
- i = 0
- start_point = @p_A
- length = @start_num
- @running_width = length
- @running_height = length
- @shapes[i] = TkcRectangle.new(canvas, @p_A, @p_B)
- switch = true
- 1.upto(@i_lim) do |i|
- prev_length = length
- length = recalc_length(length, i)
- if switch
- @p_A = calc_A(length, prev_length)
- switch = false
- elsif switch != true
- @p_B = calc_B(length, prev_length)
- switch = true
- end
- @shapes[i] = TkcRectangle.new(canvas, @p_A, @p_B)
- i+=1
- end
- end
- #================================================================
- def enter_loop()
- Tk.mainloop
- end
- #================================================================
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement