GTK+で落書き 3(Ruby)


周転円みたいな。


ライブラリ「MyGtk」についてはこちら

require_relative 'mygtk'
include Math

L = 400
R1 = 150; R2 = (L - R1 * 2) / 2 - 5
STP1 = (PI / 180) * 0.5; STP2 = (PI / 180) * 10

MyGtk.app width: L, height: L do
  draw do
    color(5000, 0, 10000)
    rectangle(true, 0, 0, L, L)
  end

  i = 0
  
  id = timer(20) do
    x = L / 2 + (R1 * cos(STP1 * i) + R2 * cos(STP2 * i))
    y = L / 2 - (R1 * sin(STP1 * i) + R2 * sin(STP2 * i))
    color(0, 65535, 0)
    arc(false, x, y, 3, 3, 0, 64 * 360)
    i += 1
    Gtk.timeout_remove(id) if STP1 * i > PI * 2
    true
  end
end

コールバック関数は true を返さないといけません。