Tải bản đầy đủ (.pdf) (22 trang)

Các thuật toán vẽ đường thẳng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (93.03 KB, 22 trang )

ĐỒ HỌA RASTERĐỒ HỌA RASTER
CÁC THUẬT TOÁNCÁC THUẬT TOÁN
VẼ ĐƯỜNG THẲNGVẼ ĐƯỜNG THẲNG
Giảng viên : Bùi Tiến Lên
Bài toán vẽ đường thẳngBài toán vẽ đường thẳng
Input
(X
1
, Y
1
) (X
2
, Y
2
)
Output
{(x
1
, y
1
) (x
2
, y
2
) … (x
n
, y
n
)} là những điểm sáng “nằm
trên” đường thẳng
Trang Trang 22


(X1, Y1)
(X2, Y2)
Một số công thức cơ bản của đường thẳngMột số công thức cơ bản của đường thẳng
m
b
m
y
x
b
mx
y
−=
+
=
(X
2
, Y
2
)
Trang Trang 33
1
1
12
12
mXYb
x
y
XX
YY
m

m
m
−=


=


=
(X
1
, Y
1
)
Phân loại đường thẳngPhân loại đường thẳng
Tăng chậm Tăng nhanh
Trang Trang 44
Giảm chậm Giảm nhanh
Giaỷi quyeỏtGiaỷi quyeỏt
Thuaọt toaựn DDA
Thuaọt toaựn Bresenham
Trang Trang 55
Thuaät toaùn DDAThuaät toaùn DDA
Trường hợp 1Trường hợp 1
Đoạn thẳng tăng chậm và điểm đầu ở bên trái.
Thuật toán
Bước 1 Xác đònh điểm đầu tiên
x
1
= X

1
y
1
= Y
1
Bước 2
Xác đònh những điểm tiếp theo
1
2
3
n

Trang Trang 77
Bước 2
Xác đònh những điểm tiếp theo
Lặp x
i
< X
2
x
i+1
= x
i
+ 1
y = mx
i+1
+ b
y
i+1
= Round(y)

2
3
n

Trường hợp 1Trường hợp 1
Cải tiến tính y
Xét hai điểm sáng liên tiếp nhau
i
i+1
(x
i
, y

)
(x
i+1
, y
mới
)
Trang Trang 88
Công thức liên hệ
y đầu là Y
1
y
mới
= y

+ m
Trường hợp 2Trường hợp 2
Đoạn thẳng tăng nhanh và điểm đầu ở bên dưới.

Thuật toán
Bước 1 Xác đònh điểm đầu tiên
x
1
= X
1
y
1
= Y
1
Bước 2
Xác đònh những điểm tiếp theo
Trang Trang 99
Bước 2
Xác đònh những điểm tiếp theo
Lặp y
i
< Y
2
y
i+1
= y
i
+ 1
x = y
i+1
/m – b/m
x
i+1
= Round(x)

Trường hợp 2Trường hợp 2
Cải tiến tính x
Xét hai điểm sáng liên tiếp nhau
Công thức liên hệ
i
i+1
(x
c
, y
i
)
(x
mới
, y
i+1
)
Trang Trang 1010
Công thức liên hệ
x đầu là X
1
x
mới
= x

+ k
1
2
12
YY
X

X
k


=
Bài toán mở rộngBài toán mở rộng
Input
(X
1
, Y
1
, C
1
) (X
2
, Y
2
, C
2
)
Output
{(x
1
, y
1
, c
1
) (x
2
, y

2
, c
2
) … (x
n
, y
n
, c
n
)} là những điểm
sáng “nằm trên” đường thẳng và có màu khác nhau
(X
2
, Y
2
, C
2
)
Trang Trang 1111
(X
1
, Y
1
, C
1
)
(X
2
, Y
2

, C
2
)
Thuaät toaùn BresenhamThuaät toaùn Bresenham
Trường hợp 1Trường hợp 1
Dự đoán điểm sáng thứ i+1
B
Trang Trang 1313
i A
Trửụứng hụùp 1Trửụứng hụùp 1
Xaõy dửùng bieỏn p
i
y = m(x
i
+1) + b
d
1
= y - y
i
d
2
= y
i
+ 1 - y
p
i
= x(d
1
- d
2

)
By
i
+1
y
C
d
2
d
1
Trang Trang 1414
i A
x
i
x
i
+1
y
i
Trửụứng hụùp 1Trửụứng hụùp 1
Khoaỷng caựch d
1
, d
2
hay khoaỷng caựch h
1
, h
2
?
B

C
d
2
h
2
Trang Trang 1515
A
x
i+1
C
d
1
h
1
Tröôøng hôïp 1Tröôøng hôïp 1
Caùch tính p
i
p
i
= 2∆yx
i
– 2∆xy
i
+ 2∆xY
1
– 2∆yX
1
+ 2∆y – ∆x
Trang Trang 1616
Trường hợp 1Trường hợp 1

Đoạn thẳng tăng chậm và điểm đầu ở bên trái.
Thuật toán
Bước 1 Xác đònh điểm đầu tiên
x
1
= X
1
y
1
= Y
1
Bước 2 Xác đònh những điểm tiếp theo
Lặp x
< X
Trang Trang 1717
Lặp x
i
< X
2
p
i
= …
p
i
< 0
x
i+1
= x
i
+ 1

y
i+1
= y
i
p
i
>= 0
x
i+1
= x
i
+ 1
y
i+1
= y
i
+ 1
Trửụứng hụùp 1Trửụứng hụùp 1
Caựch tớnh p
i
caỷi tieỏn
p
1
= 2y - x
p
i
< 0 :
p
i+1
= p

i
+ 2y
p
i
>= 0 :
p
= pi +
2

y
-
2

x
Trang Trang 1818
p
i+1
= pi +
2

y
-
2

x
Trường hợp 2Trường hợp 2
Dự đoán điểm sáng thứ i+1
A B
Trang Trang 1919
i

Trửụứng hụùp 2Trửụứng hụùp 2
A By
i
+1
C
d
2
d
1
i
2
i1
i
i
x1xd
xxd
m
b
m
1y
x
p

bieỏn

dửùng

Xaõy
+=
=


+
=
Trang Trang 2020
i
x
i
x
i
+1
y
i
x
(
)
2
1
i
i
2
ddyp =
Tröôøng hôïp 2Tröôøng hôïp 2
Caùch tính p
i
p
1
= 2∆x - ∆y
p
i
< 0 :

p
i+1
= p
i
+ 2∆x
p
i
>= 0 :
p
= pi +
2

x
-
2

y
Trang Trang 2121
p
i+1
= pi +
2

x
-
2

y
Trường hợp 2Trường hợp 2
Thuật toán

Bước 1 Xác đònh điểm đầu tiên
x
1
= X
1
y
1
= Y
1
Bước 2 Xác đònh những điểm tiếp theo
Lặp x
i
< X
2
Trang Trang 2222
Lặp x
i
< X
2
p
i
< 0
x
i+1
= x
i
y
i+1
= y
i

+ 1
p
i
>= 0
x
i+1
= x
i
+ 1
y
i+1
= y
i
+ 1

×