Đồ họa Raster - Các thuật toán vẽ đường thẳng (Phần 1)

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

pdf22 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 1914 | Lượt tải: 1download
Tóm tắt nội dung Đồ họa Raster - Các thuật toán vẽ đường thẳng (Phần 1), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ĐỒ 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 
Trang 2
(X1, Y1)
(X2, Y2)
Một số công thức cơ bản của đường thẳng
m
b
m
y
x
bmxy
−=
+=
(X
2
, Y
2
)
Trang 3
11
12
12
mXYb
x
y
XX
YY
m
−=
∆
∆
=
−
−
=
(X
1
, Y
1
)
Phân loại đường thẳng
Tăng chậm Tăng nhanh
Trang 4
Giảm chậm Giảm nhanh
Giải quyết
Thuật toán DDA
Thuật toán Bresenham
Trang 5
Thuật toán DDA
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
1
2 3 n…
Trang 7
Lặp xi < X2
xi+1 = xi + 1
y = mxi+1 + b
yi+1 = Round(y)
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
(xi, ycũ)
(xi+1, ymới)
Trang 8
Công thức liên hệ
y đầu là Y1
ymới = ycũ + m
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
Trang 9
Lặp yi < Y2
yi+1 = yi + 1
x = yi+1/m – b/m
xi+1 = Round(x)
Trườ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
(xc, yi)
(xmới, yi+1)
Trang 10
x đầu là X1
xmới = xcũ + k
12
12
YY
XX
k
−
−
=
Bài toán mở rộng
Input
(X1, Y1, C1) (X2, Y2, C2)
Output 
{(x1, y1, c1) (x2, y2, c2) … (xn, yn, cn)} là những điểm 
sáng “nằm trên” đường thẳng và có màu khác nhau
(X2, Y2, C2)
Trang 11
(X1, Y1, C1)
Thuật toán Bresenham
Trường hợp 1
Dự đoán điểm sáng thứ i+1
B
Trang 13
i A
Trường hợp 1
Xây dựng biến pi
y = m(xi+1) + b
d1 = y - yi
d2 = yi + 1 - y
pi = ∆x(d1 - d2)
Byi+1
y
C
d2
d1
Trang 14
i A
xi xi+1
yi
Trường hợp 1
Khoảng cách d1, d2 hay khoảng cách h1, h2 ?
B
C
d2
h2
Trang 15
A
xi+1
d1
h1
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 x < X
Trang 17
i 2
pi = …
pi < 0 
xi+1 = xi + 1
yi+1 = yi
pi >= 0
xi+1 = xi + 1
yi+1 = yi + 1
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 :
p = pi + 2∆y - 2∆x
Trang 18
i+1
Trường hợp 2
Dự đoán điểm sáng thứ i+1
A B
Trang 19
i
Trường hợp 2
A Byi+1
C
d2d1
i2
i1
i
i
x1xd
xxd
m
b
m
1y
x
p biến dựng Xây
−+=
−=
−
+
=
Trang 20
i
xi xi+1
yi
x
( )21i ddyp −∆=
Trường hợp 2
Cách tính pi
p1 = 2∆x - ∆y
pi < 0 :
pi+1 = pi + 2∆x
pi >= 0 :
p = pi + 2∆x - 2∆y
Trang 21
i+1
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
Trang 22
pi < 0 
xi+1 = xi
yi+1 = yi + 1
pi >= 0
xi+1 = xi + 1
yi+1 = yi + 1

File đính kèm:

  • pdfĐồ họa Raster - Các thuật toán vẽ đường thẳng (Phần 1).pdf