SSブログ

ブレゼンハムで線を描いてみる(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.21.35).png




nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。