argius note

プログラミング関連

練習:螺旋を描く

引き続き、簡易お絵かきクラスを使った練習。樹木曲線の流用で。

require "painter"
include Math

UNIT = 1
TURN = 5
INCR = 0.005

def to_radian(d) d * Math::PI / 180 end

def curve(p, n, length, angle)
  x = length * sin(to_radian(angle)) * UNIT
  y = length * cos(to_radian(angle)) * UNIT * -1
  p.draw(x, y)
  if n > 0
    curve(p, n - 1, length + INCR, angle + TURN)
  end
  p.move(-x, -y)
end

p = Painter.new(200, 128)
curve(p, 2000, 1, 0)

Tk.mainloop