Giới thiệu thuật toán vé và tô các đường cơ bản - Pdf 64

Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản

Chương 1: GIỚI THIỆU THUẬT TOÁN VẼ VÀ TÔ
CÁC ĐƯỜNG CƠ BẢN
1.1 Tổng quan
• Mục tiêu của chương 1
Học xong chương này, sinh viên phải nắm bắt được các vấn đề sau:
- Thế nào là hệ đồ họa
- Thiết kế và cài đặt được các thủ tục vẽ và tô các đường cơ bản như đường thẳng,
đường tròn, elip, và các đường cong khác.
• Kiến thức cơ bản cần thiết
Các kiến thức cơ bản cần thiết để học chương này bao gồm :
- Các khái niệm toán học về đường thẳng như : đường thẳng là gì : dạng tổng quát
phương trình đường thẳng, hệ số góc, tung độ dốc.
- Hiểu rõ hình dáng của đường thẳng phụ thuộc vào hệ số góc như thế nào.
- Phương trình tổng quát của đường tròn, ellippse ( không có tham số và có tham
số).
- Kĩ thuật lập trình: thiết lập thủ tục, hàm (lưu ý truyền qui chiếu và truyền giá
trị).
• Tài liệu tham khảo
Donald Hearn, M. Pauline Baker. Computer Graphics . Prentice-Hall, Inc.,
Englewood Cliffs, New Jersey , 1986 (chapters 3, 55-76).
• Nội dung cốt lõi
Thiết lập thủ tục vẽ :
- Đường thẳng bằng giải thuật DDA
- Đường thẳng bằng giải thuật Bresenham
- Đường tròn bằng giải thuật đối xứng
- Đường tròn bằng giải thuật Bresenham
- Đường tròn bằng giải thuật MidPoint
- Ellippse
- Đa giác

tiếp trên các pixel mà thao tác trên các thành phần hình học của đối tượng.

a. Hệ tọa độ thế giới thực:
Một trong những hệ tọa độ thực thường được dùng để mô tả các đối tượng trong
thế giới thực là hệ tọa độ Descartes. Với hệ tọa độ này, mỗi điểm P được biểu diễn bằng
một cặp tọa độ (x
p
,y
p
) với x
p
, y
p
∈R (xem hình 1.1).
Trang 7

Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản

Y
X
y
p
x
p
O
P(x
p
,y
p
)

được trên thiết bị này là chính xác thì chưa chắc hiển thị chính xác trên thíết bị khác.
Người ta xây dựng một hệ tọa độ thiết bị chuẩn đại diện chung cho tất cả các thiết bị để
có thể mô tả các hình ảnh mà không phụ thuộc vào bất kỳ thiết bị nào.
Trong hệ tọa độ chuẩn, các tọa độ x, y sẽ được gán các giá trị trong đoạn từ [0,1].
Như vậy, vùng không gian của hệ tọa độ chuẩn chính là hình vuông đơn vị có góc trái
dưới (0, 0) và góc phải trên là (1, 1).
Quá trình mô tả các đối tượng thực như sau (xem hình 1.3):
Ảnh định nghĩa
trên tọa độ thế
giới thực.
Tọa độ chuẩn hóa Tọa độ thiết bị
màn hình
máy in
thiết bị
khác

Hình 1.3 : Hệ tọa độ trên màn hình.
1.3. Thuật toán vẽ đoạn thẳng
Xét đoạn thẳng có hệ số góc 0<m<=1 và Δx>0. Với các đoạn thẳng dạng này, nếu
(x
i
, y
i
) là điểm đã được xác định ở bước thứ i thì điểm kế tiếp (x
i+1
, y
i+1
) ở bước thứ i+1 sẽ
là một trong hai điểm sau (xem hình vẽ 1.4) :
x

+2,y
i
+2)
(x
i
+3,y
i
+2)
(x
i
+4,y
i
+3)
Hình 1.4 : Các điểm vẽ gần với điểm muốn vẽ.
Vấn đề đặt ra là chọn điểm vẽ như thế nào để đường thẳng được vẽ gần với đường
thẳng muốn vẽ nhất và đạt được tối ưu hóa về mặt tốc độ ?
1.3.1. Thuật toán DDA (Digital DifferentialAnalyzer)
Là thuật toán tính toán các điểm vẽ dọc theo đường thẳng dựa vào hệ số góc của
phương trình đường thẳng y=mx+b.
Trong đó, m=
x
y
Δ
Δ
, Δy = y
i+1
- y
i
, Δx = x
i+1

i
+ m → int(y
i +1
)
• Tóm lại khi 0<m<=1 :
x
i +1
= x
i
+ 1
y
i +1
= y
i
+ m → int(y
i +1
)
• Trường hợp m>1: chọn bước tăng trên trục y một đơn vị.
x
i +1
= x
i
+ 1/m → int(x
i +1
)
y
i +1
= y
i
+ 1


Lưu đồ thuật toán DDA

Begin
dx=x2-x1
dy=y2-y1
abs(dx)>abs(dy)
step=abs(dx)
step=abs(dy)
x_inc=dx/step
y_inc=dy/step
x=x1;y= y1
putpixel(x1,y1,c)
k<=step
x = x+x_inc
y = y+y_inc
putpixel(round(x),round(y),c)
End
No Yes
No
Yes
Trang 12

Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản

Cài đặt minh họa thuật toán DDA
Procedure DDA ( x1, y1, x2, y2, color : integer );
Var dx, dy, step : integer;
X_inc, y_inc , x, y : real ;
Begin

P
2
y
i+1
d2
d1
x
i+1
= x
i
+1
P
1 Hình 1.6 : Dạng đường thẳng có 0<=m<=1.

Trang 13

Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản

Gọi (x
i
+1,y
i +1
) là điểm thuộc đoạn thẳng (xem hình 1.6). Ta có y:= m(x
i
+1)+b.

Đặt d

1
- d
2
)
Ta có : d
1
- d
2
= 2 y
i+1
- 2y
i
- 1
= 2m(x
i
+1) + 2b - 2y
i
- 1
⇒ P
i
= Δx (d
1
- d
2
) = Δx[2m(x
i
+1) + 2b - 2y
i
- 1]
= Δx[2

được điểm cần chọn ở bước (i+1). Ta có :
P
i +1
- P
i
= (2Δy.x
i+1
- 2Δx.y
i+1
+ C) - (2Δy.x
i
- 2Δx.y
i
+ C )
⇔ P
i +1
= P
i
+ 2Δy - 2Δx ( y
i+1
- .y
i
)
- Nếu P
i
< 0 : chọn điểm P1, tức là y
i +1
= y
i
và P

0
,y
0
) là điểm nguyên thuộc về đoạn thẳng nên ta có :
y
0
= m .x
0
+ b =
Δ
Δ
y
x
.x
0
+ b
Thế vào phương trình trên ta được :
P
0
= 2Δy - Δx Trang 14

Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản

Lưu đồ thuật toán Bresenham

Begin
dx = x2-x1; dy = y2 - y1;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status