1
1
Thu t toán v đ ng th ng Bresenham ườ
Thu t toán v đ ng th ng Bresenham ườ
2
2
M i t ng quan gi a X & Y ươ
M i t ng quan gi a X & Y ươ
khi đ l n h s góc nh h n 1 ơ
khi đ l n h s góc nh h n 1 ơ
x tăng 1 và y gi nguyên hay tăng 1
x tăng 1 và y gi nguyên hay tăng 1
Đi u này b o đ m cho đ ng th ng ườ
Đi u này b o đ m cho đ ng th ng ườ liên t c
liên t c
N u đ l n c a h s góc l n h n 1, chúng ta đ i vai trò c a x ế ơ
N u đ l n c a h s góc l n h n 1, chúng ta đ i vai trò c a x ế ơ
& y
& y
x đ c g i là giá tr đ c l p và y là ượ
x đ c g i là giá tr đ c l p và y là ượ giá tr ph thu c
giá tr ph thu c
Dx
Dy
3
3
Thu t tn Bresenham
Thu t tn Bresenham
Gi i thi u:
Gi i thi u:
Gi s đ ng cong đ c x p x thành các đi m l n l t là ườ ượ ượ
Gi s đ ng cong đ c x p x thành các đi m l n l t là ườ ượ ượ
(x
(xi
i,y
,yi
i)
). Các đi m này có t a đ nguyên và đ c hi n th trên ượ
. Các đi m này có t a đ nguyên và đ c hi n th trên ượ
màn hình.
màn hình.
Bài toán đ t ra là n u bi t đ c t a đ (x ế ế ượ
Bài toán đ t ra là n u bi t đ c t a đ (x ế ế ượ i
i,y
,yi
i) c a b c th i, thì ướ
) c a b c th i, thì ướ
đi m b c i+1 là (x ướ
đi m b c i+1 là (x ướ i+1
i+1,y
,yi+1
i+1) s đ c xác đ nh nh th nào. ượ ư ế
) s đ c xác đ nh nh th o. ượ ư ế
Trong tr ng h p h s góc 0<=m<=1, chúng ta có xườ
Trong tr ng h p h s góc 0<=m<=1, chúng ta có xườ i+1
i+1=x
=xi
i+1 và
+1 và
y
yi+1
i+1=y
=yi
i hay y
hay yi+1
i+1=y
=yi
i+1
+1
xi
yi
yi+1
yi-1
xi+1
4
4
Thu t toán
Thu t toán
Ph ng trình đ ng th ng qua 2 đi m (xươ ườ
Ph ng trình đ ng th ng qua 2 đi m (xươ ườ 1
1, y
, y1
1) và (x
) và (x2
2, y
, y2
2) là
) là
y=mx+b v i m=Dy/Dx và b=y
y=mx+b v i m=Dy/Dx và b=y1
1-mx
-mx1
1.
.
Đ t d
Đ t d1
1=y-y
=y-yi
i và d
và d2
2=(y
=(yi
i+1)-y, do đó vi c ch n t a đ c a y
+1)-y, do đó vi c ch n t a đ c a y i+1
i+1 ph
ph
thu c vào d
thu c vào d1
1 và d
và d2
2 ( hay d u c a d
( hay d u c a d 1
1 - d
- d2
2):
):
N u dế
N u dế1
1-d
-d2
2<0 thì ch n y
<0 thì ch n yi+1
i+1=y
=yi
i
Ng c l i, ch n yượ
Ng c l i, ch n yượ i+1
i+1=y
=yi
i+1
+1
xi
yi
yi+1 P
xi+1=xi+1
S
d2
d1
(xi+1,y=f(xi+1))
5
5
Thu t toán (cont.)
Thu t toán (cont.)
d
d1
1 - d
- d2
2 = (2y – 2y
= (2y – 2yi
i – 1) là m t s th c do ch a
– 1) là m t s th c do ch a m
m
Xét p
Xét pi
i = Dx (d
= Dx (d1
1 - d
- d2
2) = Dx (2y - 2y
) = Dx (2y - 2yi
i - 1) = 2Dy x
- 1) = 2Dy xi
i - 2Dx y
- 2Dx yi
i + C
+ C
C = 2Dy + (2b - 1)Dx
C = 2Dy + (2b - 1)Dx
Do d u c a p
Do d u c a p i
i và (d
và (d1
1-d
-d2
2) gi ng nhau nên khi xét d u c a p
) gi ng nhau nên khi xét d u c a p i
i thì ta
thì ta
xác đ nh đ c y ượ
xác đ nh đ c y ượ i+1
i+1
M c khác, p
M c khác, pi+1
i+1 – p
– pi
i = (2Dy x
= (2Dy xi+1
i+1 - 2Dx y
- 2Dx yi+1
i+1 + C) - (2Dy x
+ C) - (2Dy xi
i - 2Dx y
- 2Dx yi
i + C)
+ C)
= 2Dy – 2Dx(y
= 2Dy – 2Dx(yi+1
i+1 y
– yi
i)
)
T đây, ta suy ra cách tính p
T đây, ta suy ra cách tính pi+1
i+1 theo p
theo pi
i:
:
N u pế
N u pếi
i<0 thì y
<0 thì yi+1
i+1=y
=yi
i nên p
nên pi+1
i+1 = p
= pi
i + 2Dy
+ 2Dy
Ng c l i thì yượ
Ng c l i thì yượ i+1
i+1=y
=yi
i+1 nên p
+1 nên pi+1
i+1 = p
= pi
i + 2Dy – 2Dx
+ 2Dy – 2Dx
Giá tr p đ u tiên đ c tính t i (x ượ
Giá tr p đ u tiên đ c tính t i (x ượ 1
1, y
, y1
1) là p
) là p1
1 = 2Dy x
= 2Dy x1
1 -2Dx y
-2Dx y1
1 + C =
+ C =
2Dy – Dx
2Dy – Dx