# The Golden Fibonacci Ratio (#69)

**URL:** <https://www.ruby-forum.com/t/the-golden-fibonacci-ratio-69/77049>\
**Category:** Ruby\
**Created:** [March 5, 2006, 10:08pm UTC](https://www.ruby-forum.com/t/the-golden-fibonacci-ratio-69/77049 "2006-03-05T22:08:02Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidtl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/35a633/32.png) [@davidtl](https://www.ruby-forum.com/u/davidtl)\
**Post date:** [March 5, 2006, 10:08pm UTC](https://www.ruby-forum.com/t/the-golden-fibonacci-ratio-69/77049/1 "2006-03-05T22:08:02Z")

</div>

Simple Tk version.  
“Inifinite” steps (rectangles);  
press “Space” bar for each step;  
automatic increase scroll region.

require ‘tk’

class GoldenRect  
include Enumerable  
def initialize  
@w = @h = 1  
end

def each  
inc\_w = true  
loop do  
yield [@w, @h]  
inc\_w ? (@w += @h) : (@h += @w)  
inc\_w = !inc\_w  
end  
end  
end

canvas = TkCanvas.new() {  
xscrollbar(sb\_x = TkScrollbar.new)  
yscrollbar(sb\_y = TkScrollbar.new)  
Tk.grid( self, sb\_y, :sticky=\>:news )  
Tk.grid( sb\_x, ‘x’, :sticky=\>:we )  
TkGrid.rowconfigure(Tk.root, 0, :weight=\>1)  
TkGrid.columnconfigure(Tk.root, 0, :weight=\>1)  
}

thread = Thread.new(canvas) { |c|  
mx = my = 5 # margin x, y  
sx = sy = 10 # rectangle unit scale  
GoldenRect.new.each do |w, h|  
c.create(TkcRectangle, mx, my, mx + (w \* sx), my + (h \* sy))  
c.scrollregion([0, 0, (2 \* mx) + (w \* sx), (2 \* my) + (h \* sy)])  
sleep  
end  
}

TkRoot.bind(‘space’, proc { thread.wakeup })  
Tk.mainloop

**END**

---

<div class="post-metadata">

**Author:** ![davidtl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/35a633/32.png) [@davidtl](https://www.ruby-forum.com/u/davidtl)\
**Post date:** [March 6, 2006, 2:45am UTC](https://www.ruby-forum.com/t/the-golden-fibonacci-ratio-69/77049/2 "2006-03-06T02:45:48Z")

</div>

Displaying rectangles in ASCII seemed a bit 20th century. 😉

So I decided this was an excellent opportunity to play with the Ruby  
PDF library. Code and example output at  
[http://www.jasani.org/articles/2006/03/06/rubyquiz-the-golden-fibonacci-ratio-69](http://www.jasani.org/articles/2006/03/06/rubyquiz-the-golden-fibonacci-ratio-69)

- Hitesh  
[http://www.jasani.org/](http://www.jasani.org/)
