[r]
(1)Bài 2:
Các gi
ả
i thu
ậ
t sinh
các th
ự
c th
ể
c
ơ
s
ở
(2)Gi
ả
i thu
ậ
t xây d
ự
ng các
th
ự
c th
ể
c
ơ
s
ở
Gi
ả
i thu
ậ
t sinh
đườ
ng th
ẳ
ng – Line
Gi
ả
i thu
ậ
t sinh
đườ
ng tròn - Circle
Gi
ả
i thu
ậ
t VanAken sinh Ellipse
Gi
ả
i thu
ậ
t sinh
đ
a giác
(3)R
ờ
i r
ạ
c hoá
đ
i
ể
m
ả
nh
(Scan Conversion rasterization)
Scan Conversion rasterization
Tính ch
ấ
t các
đố
i t
ượ
ng c
ầ
n
đả
m b
ả
o :
smooth continuous
pass through specified points uniform brightness
(4)Bi
ể
u di
ễ
n
đ
o
ạ
n th
ẳ
ng
Bi
ể
u di
ễ
n t
ườ
ng minh
(y-y1)/( x-x1) = ( y2-y1)/( x2-x1)1 y = kx + m
Bi
ể
u di
ễ
n không t
ườ
ng minh
(y2-y1)x - (x2-x1)y + x2y1 - x1y2 = 0 hay rx + sy + t =
Biểu diễn tham biến P(u) = P1 + u(P2 - P1)
P(x1, y1)
P(x2 , y2)
(5)Thu
ậ
t toán DDA
(Digital Differential Analizer)
Gi
ả
i thu
ậ
t DDA
Với < k <
xi+1 = xi + yi+1 = yi + k với i=1,2,3
Giải thuật thông thường
DrawLine(int x1,int y1, int x2,int y2, int color)
{
float y; int x;
for (x=x1; x<=x2; x++) {
(6)Gi
ả
i thu
ậ
t Bresenham
1960 Bresenham thu
ộ
c IBM
đ
i
ể
m g
ầ
n v
ớ
i
đườ
ng th
ẳ
ng d
ự
a
trên
độ
phân giai h
ư
u h
ạ
n
lo
ạ
i b
ỏ đượ
c phép toán
chia phép toán làm tròn
nh
ư
ta
đ
ã th
ấ
y gi
ả
i thu
ậ
t
DDA
Xét
đ
o
ạ
n th
ẳ
ng v
ớ
i < k < 1
0
0
(7)Gi
ả
i thu
ậ
t Bresenham
d
2= y - yi = k(xi +1) + b - yi
d
1= yi+1 - y = yi + - k(xi + 1) - b
d1 d2 yi
yi+1
A
(8)(9)yi+1
( xi , yi) xi xi+1
Gi
ả
i thu
ậ
t trung
đ
i
ể
m-Midpoint
Jack Bresenham 1965 / Pitteway 1967
VanAken áp dụng cho việc sinh các đường
thẳng và đường trịn 1985
Các cơng thức đơn giản hơn, tạo được các
điểm tương tự như với Bresenham
d = F (xi + 1, yi + 1/2) trung điểm của
đoạn AB
Việc so sánh, hay kiểm tra M thay
bằng việc xét giá trị d.
Nếu d > điểm B chọn, yi+1 = yi
(10)Bresenham’s Algorithm:
Midpoint Algorithm
If di > 0 then chọn điểm A ⇒ trung điểm có dạng: