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

Bài giảng đồ họa raster các thuật toán vẽ đường thẳng bùi tiến lên

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 (130.88 KB, 22 trang )

ĐỒ HỌA RASTER

CÁC THUẬT TOÁN
VẼ ĐƯỜNG THẲNG

Giảng viên : Bùi Tiến Lên


Bài toán vẽ đường thẳng
Input
(X1, Y1) (X2, Y2)
Output
{(x1, y1) (x2, y2) … (xn, yn)} là những điểm sáng “nằm trên” đường thẳng

(X 2 , Y 2 )

(X 1 , Y 1 )

Trang 2


Bài toán vẽ đường thẳng

Trang 3


Một số công thức cơ bản của đường thẳng

(X2, Y2)
y = mx + b
y b


x= −
m m
Y2 − Y1 ∆y
m=
=
X2 − X1 ∆x
b = Y1 − mX1
(X1, Y1)

Trang 4


Phân loại đường thẳng
Tăng chậm

Tăng nhanh

Giảm chậm

Giảm nhanh

Trang 5


Giải quyết
Thuật toán DDA
Thuật toán Bresenham

Trang 6



Thuật toán DDA


Thuật toán DDA

Trang 8


Trườ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
x1 = X1

1

y1 = Y1
Bước 2 Xác định những điểm tiếp theo
Lặp xi < X2
xi+1 = xi + 1

2

3 …

n

y = mxi+1 + b
yi+1 = Round(y)


Trang 9


Trườ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

Công thức liên hệ

(xi, ycũ)
(xi+1, ymới)

y đầu là Y1
ymới = ycũ + m

Trang 10


Trườ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
x1 = X1
y1 = Y1
Bước 2 Xác định những điểm tiếp theo
Lặp yi < Y2

yi+1 = yi + 1
x = yi+1/m – b/m
xi+1 = Round(x)

Trang 11


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

i
i+1

Công thức liên hệ

(xc, yi)
(xmới, yi+1)

X2 − X1
k=
Y2 − Y1
x đầu là X1
xmới = xcũ + k

Trang 12


Thuật toán Bresenham



Trường hợp 1
Dự đoán điểm sáng thứ i+1

B
i

A

Trang 14


Trường hợp 1
Xây dựng biến pi
y = m(xi+1) + b

yi+1

B

d1 = y - yi

d2

d2 = yi + 1 - y

y

pi = ∆x(d1 - d2)


C
d1

yi

i

A

xi

xi+1

Trang 15


Trường hợp 1
Cách tính pi

pi = 2∆yxi – 2∆xyi + 2∆xY1 – 2∆yX1 + 2∆y – ∆x

Trang 16


Trườ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
x1 = X1
y1 = Y1

Bước 2 Xác định những điểm tiếp theo
Lặp xi < X2
pi = …
pi < 0
xi+1 = xi + 1
yi+1 = yi
pi >= 0
xi+1 = xi + 1
yi+1 = yi + 1

Trang 17


Trường hợp 1
Cách tính pi cải tiến

p1 = 2∆y - ∆x
pi < 0 :
pi+1 = pi + 2∆y
pi >= 0 :
pi+1 = pi + 2∆y - 2∆x

Trang 18


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

A


B

i

Trang 19


Trường hợp 2
Xaây döïng bieán pi
yi + 1 b
x=

m
m
d1 = xi − x

C

yi+1 A

B
d2

d1

d2 = x i + 1 − x

pi = ∆y( d1 − d2 )
yi


i
xi

x

xi+1

Trang 20


Trường hợp 2
Cách tính pi

p1 = 2∆x - ∆y
pi < 0 :
pi+1 = pi + 2∆x
pi >= 0 :
pi+1 = pi + 2∆x - 2∆y

Trang 21


Trường hợp 2
Thuật toán
Bước 1 Xác định điểm đầu tiên
x1 = X1
y1 = Y1
Bước 2 Xác định những điểm tiếp theo
Lặp xi < X2
pi < 0

xi+1 = xi
yi+1 = yi + 1
pi >= 0
xi+1 = xi + 1
yi+1 = yi + 1

Trang 22



×