ブレゼンハムで線を描いてみる(Ruby/SDL)
ちょいと線描画させたくなって、直線の描画アルゴリズムの定番を試してみた。
下記サイトがわかりやすかった。
参照:
以下Rubyのコード。(ファイル名test_line.rb)
まあ、とりあえず汎用性は考えてなくて、x0<x1, y0<y1の時だけ正しく動く。
require 'sdl'
def draw_line(screen, x0,y0,x1,y1)
dx = x1-x0
dy = y1-y0
px = x0
py = y0
e = dy
loop do
screen.put_pixel(px, py, [255,255,255])
px += 1
e += 2*dy
if(e >= 2*dx) then
e -= 2*dx
py += 1
end
if(px>=x1) then break end
end
end
SDL.init( SDL::INIT_VIDEO )
screen = SDL.setVideoMode(640, 480, 16, SDL::SWSURFACE )
draw_line(screen, 100, 100, 400, 200)
screen.updateRect(0,0,0,0)
loop do
while event = SDL::Event2.poll
case event
when SDL::Event2::Quit, SDL::Event2::KeyDown
exit
end
end
end
で、
> rsdl test_line.rb
とりあえずうまく行ってめでたしめでたし。
2013-09-07 20:31
nice!(0)
コメント(0)
トラックバック(0)
コメント 0