On 5/6/05, Hidetoshi NAGAI <nagai / ai.kyutech.ac.jp> wrote:
> From: Joe Van Dyk <joevandyk / gmail.com>
> Subject: Re: Ruby-tk question
> Date: Fri, 6 May 2005 14:45:18 +0900
> Message-ID: <c715e6405050522443f393a8c / mail.gmail.com>
> > It's horribly difficult for someone who hasn't done math in years.
> 
> Here is an example. :-)
> -----------------------------------------------
> require 'tk'
> 
> def rotate(deg, x, y, c_x = 0, c_y = 0)
>   rad = (deg * Math::PI)/180.0
>   s_rad = Math::sin(rad)
>   c_rad = Math::cos(rad)
> 
>   x -= c_x
>   y -= c_y
> 
>   [c_x + (x * c_rad - y * s_rad),  c_y + (x * s_rad + y * c_rad)]
> end
> 
> coords = [[100, 100], [200, 100], [100, 140]]
> center = [120, 120]
> 
> c = TkCanvas.new.pack
> poly = TkcPolygon.new(c, coords, :fill=>'red')
> TkcOval.new(c,
>             center[0] - 2, center[1] - 2,
>             center[0] + 2, center[1] + 2,
>             :fill=>'black')
> 
> deg = 0
> TkTimer.start(50, -1, proc{
>                 deg = (deg + 5) % 360
>                 poly.coords(coords.collect{|x, y| rotate(deg, x, y, *center)})
>               })
> 
> Tk.mainloop
 
Perfect!  Thanks.