Bresenham - KimTaebin-ai/study_posts GitHub Wiki
1. ์ง์ ๋ฐฉ์ ์ ์ดํดํ๊ธฐ
์ง์ ์ ๋ ์ ์ ์ฐ๊ฒฐํ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ (0,0)๊ณผ (5,3)์ ์๋ ์ ์ ์๊ฐํด๋ณด์.
y = mx + b
์ง์ ๋ฐฉ์ ์: y
:y
์ขํ, ์ฆ ์ธ๋ก ์์น์ด๋ค.x
:x
์ขํ, ์ฆ ๊ฐ๋ก ์์น์ด๋ค.m
: ๊ธฐ์ธ๊ธฐ๋ผ๊ณ ํ๋ ๊ฐ์ธ๋ฐ, ์ง์ ์ด ์ผ๋ง๋ ๊ฐํ๋ฅธ์ง๋ฅผ ๋ํ๋ธ๋ค.- ์๋ฅผ ๋ค์ด, (0,0)์์ (5,3)์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ ์ธ๋ก ๋ณํ๋์ 3, ๊ฐ๋ก ๋ณํ๋์ 5์ด๋ฏ๋ก, ( m = \frac{3}{5} ).
b
: y ์ ํธ์ผ๋ก,x=0
์ผ ๋y
์ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์์์ ์ด (0, 0)์ผ ๋๋b = 0
์ ๋๋ค.
2. ์ง์ ์ ๊ทธ๋ฆด ๋ ๋ฌธ์ ์
์ปดํจํฐ ํ๋ฉด์ ์ ์ ๊ทธ๋ฆด ๋๋ ํฝ์ ๋จ์๋ก ํ์๋๊ธฐ ๋๋ฌธ์, ์๋ฌด๋ฆฌ ์์ ์ด๋์ด๋ผ๋ ์ขํ๊ฐ 1์ฉ ์ฆ๊ฐํฉ๋๋ค. ์ฆ, ์ปดํจํฐ๋ ์ ์ ํ ํฝ์ ์ฉ ์ฎ๊ฒจ๊ฐ๋ฉฐ ๊ทธ๋ ค์ผ ํ๋ฏ๋ก ๋ถ๋๋ฝ๊ฒ ๊ทธ๋ฆฌ๊ธฐ ์ํด์๋ ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ๊ธฐ์ธ๊ธฐ๊ฐ ( m = \frac{3}{5} )์ธ ๊ฒฝ์ฐ,
x
๊ฐ 1์ฉ ์ฆ๊ฐํ ๋๋ง๋คy
๋ ์ ํํ 0.6์ฉ ์ฆ๊ฐํด์ผ ํฉ๋๋ค. - ๊ทธ๋ฌ๋ ์ปดํจํฐ๋ 0.6ํฝ์
์ ๊ทธ๋ฆด ์ ์๊ณ ,
y
๋ ๋ฐ๋์ ์ ์ ๊ฐ์ผ๋ก๋ง ํํ๋ฉ๋๋ค. - ๋ฐ๋ผ์ ์ ์๋ก
y
๊ฐ์ ๊ทผ์ฌํด์ ํ ํฝ์ ์ฉ ์ฎ๊ฒจ๊ฐ๋ฉฐ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํฉ๋๋ค.
3. ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๊ฐ๋
๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ํฝ์
์ ์ ํํด์ผ ํ๋์ง ๊ณ์ฐํ์ฌ ์ง์ ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์
๋๋ค. x
๊ฐ์ด ์ฆ๊ฐํ ๋๋ง๋ค y
๊ฐ ์ผ๋ง๋งํผ ์ฆ๊ฐํ ์ง ์ ๊ณ์ฐํด์, ์ ์ ์ขํ๋ก ๊ทผ์ฌํ๋ฉด์ ์ง์ ์ ์ต๋ํ ๊ฐ๊น๊ฒ ๊ทธ๋ฆฝ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ์์ด๋์ด
-
์ค์ฐจ ๊ณ์ฐ:
- ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์์๋
x
์ขํ๋ฅผ ํ ํฝ์ ์ฉ ์ฆ๊ฐ์ํค๋ฉฐy
์ ์ด๋์ ๊ฒฐ์ ํฉ๋๋ค. - ์ด๊ธฐ ์ค์ฐจ ๊ฐ์ ์ค์ ํ๊ณ ,
x
๊ฐ ์์ง์ผ ๋๋ง๋ค ์ด ์ค์ฐจ๋ฅผ ๋ํ๋ฉด์ ์ด๋ ๋ฐฉํฅ์ ํฝ์ ๋ก ๊ฐ์ง ๊ฒฐ์ ํฉ๋๋ค.
- ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์์๋
-
์ค์ฐจ ๊ฐ ์ ๋ฐ์ดํธ:
x
๊ฐ 1 ์ฆ๊ฐํ ๋,y
๊ฐ ์ผ๋ง๋ ์์ง์ฌ์ผ ์ง์ ์ ๊ฐ๊น์ด์ง๋ฅผ ์ค์ฐจ ๊ฐ(error
)์ผ๋ก ํ๋จํฉ๋๋ค.- ์ค์ฐจ๊ฐ ํน์ ๊ฐ๋ณด๋ค ํฌ๋ฉด
y
๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ , ์๋๋ฉด ๊ทธ๋๋กy
๋ ์ ์งํฉ๋๋ค. - ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๊ฐ๋ฅํ ํ ์ง์ ์ ๊ฐ๊น์ด ํฝ์ ์ ์ ํํ๊ฒ ๋ฉ๋๋ค.
4. ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ
์๋ฅผ ๋ค์ด, ์์์ ์ด (0,0)์ด๊ณ ๋์ ์ด (5,3)์ธ ์ง์ ์ ๊ทธ๋ ค๋ณผ๊ฒ์.
-
์ด๊ธฐ ์ค์ :
x = 0
,y = 0
,dx = 5
(๊ฐ๋ก ์ด๋๋),dy = 3
(์ธ๋ก ์ด๋๋).- ์ค์ฐจ ๊ฐ
error = dx - dy = 5 - 3 = 2
.
-
์ขํ๋ฅผ ํ ํฝ์ ์ฉ ์ด๋ํ๋ฉด์ ์ ์ฐ๊ธฐ:
x
๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉฐ,error
๋ฅผ ๊ณ์ฐํด๊ฐ๋ฉด์y
์ ์์ง์์ ๊ฒฐ์ ํฉ๋๋ค.error
๊ฐ 0๋ณด๋ค ํฌ๋ฉดy
๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ ,error
๊ฐ์์dy
๋ฅผ ๋นผ์ค๋๋ค.error
๊ฐ 0๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉดx
๋ง ์ด๋ํ๊ณ ,error
์dx
๋ฅผ ๋ํด์ค๋๋ค.
-
๊ณผ์ ๋ฐ๋ณต:
- ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ๊ฐ ๋จ๊ณ๋ง๋ค
(x, y)
์ขํ๋ฅผ ๊ทธ๋ฆผ์ ์ฐ์ด ์ ์ ์ด์ด๊ฐ๋๋ค.
- ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ๊ฐ ๋จ๊ณ๋ง๋ค
5. ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ ์์
- ์์์ : (0,0)
- ๋์ : (5,3)
error = 2
- ๊ฒฐ๊ณผ: ์ ๋ค์ ์ด์ด (0,0), (1,1), (2,1), (3,2), (4,2), (5,3)์ ์ ์ด ์ฐํ๋ฉฐ, (0,0)์์ (5,3)์ผ๋ก ์ด์ด์ง๋ ์ ์ด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋ธ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ error
๊ฐ์ผ๋ก x
, y
์ขํ์ ๋ณํ๋ฅผ ๊ฒฐ์ ํ์ฌ ์ง์ ์ ๊ทธ๋ฆฝ๋๋ค.