https://zingl.github.io/bresenham.html
BresenhamBresenhamzingl.github.io๋ฌด๋ ค 2012๋
์ ๋์จ ๋๋ฆ ๋ฐ๋๋ฐ๋ํ ๋
ผ๋ฌธ.
๋ธ๋ฆฌ์ ํ์ด 1962๋ ๋์ ๋์จ๊ฑฐ๋๊น ์๋์ ์ผ๋ก ์์ฒญ ์ต๊ทผ ๋ ผ๋ฌธ์. ๋ผ์ธ๋ง์ ์ํ๊ฒ ์๋๋ผ ์ฌ๋ฌ๊ฐ์ง ๊ณก์ ์ ์ฝ๊ฒ ๊ทธ๋ฆฌ๊ธฐ์ํ ์๊ณ ๋ฆฌ์ฆ์ธ๋ฐ
์ฝ๋ ์์ฒด๊ฐ ๋๋ฌด ๊ฐ๊ฒฐํ๊ณ ๊น๋ํ๋ค.ย
void plotLine(int x0, int y0, int x1, int y1)
์ด๊ฒ ๋ย
๊ฒฐ๊ตญ abs(dx), abs(dy)๋ก ํญ์ ๊ธฐ์ธ๊ธฐ๊ฐ ์์๊ฐ ๋๊ฒ ํ๊ณ ํ์ฌ์ ์ ๋ํด ์,๋๊ฐ์ ,์ค๋ฅธ์ชฝ 3์ ์ค์ ํ๋๋ฅผ ์ ํํ๊ฒ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ธ๋ฐ
๊ทผ๋ณธ์ ๋ธ๋ฆฌ์ ํ์ฒ๋ผ ์๋ฌ ๋์ ํด์ ์ ์ ์๋ฌ๋ฅผ ์ ํํ๋ ๊ฒ๊ณผ ๊ฐ์.
๊ฐ๋จํ ์ ๊ธฐํ๋ฉด ์ ๋น๊ต๋ฌธ์ด๋ ๋์ ํ๋ ๋ถ๋ถ์ ๋๊ฐ์ ์๋ฌ๊ฐ์ ๋ํด ์์ชฝ ํฝ์ ์ ์๋ฌ๊ฐ์ด ๋๊ฐ์ ๋ณด๋ค ๋ ํฌ๋ฉดย ย x+1,ย ์ค๋ฅธ์ชฝ ํฝ์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๊ฐ์ ํฝ์ ์ ์๋ฌ๊ฐ๊ณผ ๋น๊ตํด์ ์๋ฌ๊ฐ์ ์ ๋๊ฐ์ด ๋๊ฐ์ ์ด ๋ ์ ์ผ๋ฉด y+1 ํด์ฃผ๋๊ฑฐ์. ๊ทธ๊ฑธ ์ต์ ํ ํ๋ค๊ณ ์ฝ๋๋ก ์ข ๊ผฌ์๋์ ๊ฒ.
์ ์ฌ์ดํธ ๊ฐ๋ณด๋ฉด ์ง์ ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ๊ฐ์ง ์๋๋ฐ 2D๊ฒ์์์ Line ๊ฒ์ ๊ฐ์๊ฑฐํ ๋ ๋๋ฆ ์ ์ฉํ์ง ์์๊น ์ถ๋ค.
๋ธ๋ฆฌ์ ํ ์ซ์๊ฒ ์ผ์ด์ค๋ง๋ค ๋์ํด์ผํ๋๊ฒ ์ฝ๋๋ ๋๋ฌ์์ ธ์ ์ซ์๋๋ฐ ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ฌด ๊น๋ํด์ ๋ง์๋๋ค.
dda ์๊ณ ๋ฆฌ์ฆ ์๋? 2012๋ ๋ณด๋ค ๋ ์ค๋๋์ํ ๋ฐ
dda ์๋. ์์ ๋งํฌ ๊ฑธ์ด๋จ์ผ๋ ๊ด์ฌ์์ ์ดํด๋ด
dda๋ ๋ผ์ธ์ conservativeํ๊ฒ ๊ทธ๋ฆผ. ํฝ์ ์ด ๋ผ์ธ์ ๊ฑธ์ณ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด ๊ทธ๋ฆฌ๋๋ฐ ๋ธ๋ ์ ํ์ ํฝ์ ๊ฐ์ด๋ฐ ๊ฐ์ด ์ด๋์ ์๋๋์๋ฐ๋ผ ๋ฌ๋ผ์ง
์ ๋ธ๋ฆฌ์ ํ์ ์ผ๋ฐํ์ํจ ํจ์๊ตฌ๋ ๊ทผ๋ฐ dda๋ ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๊ฑธ์น ํฝ์ ์ ๋ฌด์กฐ๊ฑด ๊ทธ๋ฆฐ ๊ฑด ์๋ํ ๋ฐ ์ฝ๋ ๋ค์ ์ฝ์ด๋ด๋ ๊ทธ๋ผ
์ฝ๋ ๋ณด๊ณ ํ๋ฐ ๋บ๋ค ๊ณ ๋ง๋ค