ĐỒ HỌA RASTER
CÁC THUẬT TOÁN
VẼ ĐƯỜNG TRÒN
Giảng viên : Bùi Tiến Lên
Phân loại đường tròn
Đường tròn tâm O
O
Đường tròn tâm bất kỳ
O
Trang 2
Ứng dụng phép tịnh tiến
Nếu (x, y) thuộc đường tròn tâm O
Thì (x + xc, y + yc) thuộc đường tròn tâm (xc, yc)
(xc, yc)
(x+xc, y+yc)
O
(x, y)
Trang 3
Phương trình đường tròn
r
O
x2 + y2 = r2
y = r2 − x2
Trang 4
Tính đối xứng của đường tròn
gi
ác
1
y
ph
ân
Đường tròn có 4 trục đối xứng
-Trục Ox
-Trục Oy
-Trục phân giác thứ nhất
-Trục phân giác thứ hai
O
x
ph
ân
gi
ác
2
Trang 5
Ứng dụng tính đối xứng
Nếu (x, y) thuộc đường tròn
Thì (-x, y), (x, -y), (-x, -y), (y, x), (-y, x), (y, -x) và (-y, -x) thuộc
đường tròn
2
1
3
chọn
8
O
4
7
5
6
Trang 6
Vẽ cung một phần tám thứ nhất
Input
r bán kính
Output
{(x1, y1), (x2, y2) … (xn, yn)} “thuộc” cung một phần tám thứ
nhất
A
B
O
Trang 7
Khảo sát cung một phần tám thứ nhất
Mục tiêu khảo sát sự biến thiên của hoành độ và tung độ
Haøm y = r 2 − x 2 vôùi x ∈ [0,
x
y' = - 2
r − x2
r2
y" = - 2
(r − x 2 )3 2
r
]
2
Trang 8
Khảo sát cung 1/8 thứ nhất
Bảng biến thiên
x
y
y'
0
r
0
y" −
r
2
r
2
Đường cong
giảm chậm
−1
−
Trang 9
Thuật tốn trực tiếp
bước 1 Xác đònh điểm đầu
x1 = 0
y1 = r
bước 2 Xác đònh những điểm còn lại
r
Lặp xi < [ ]
2
xi+1 = xi + 1
y = r 2 − xi2+1
yi+1 = Round(y)
Trang 10
Thuật toán MidPoint
Dự đoán điểm sáng thứ i+1
i
A
B
Trang 11
Thut toỏn MidPoint
- Khỏi nim bờn trong / bờn
ngoi ng trũn
- Hm kim tra mt im bờn
trong / bờn ngoi ng trũn
F(x, y) = x2 + y2 r2
- Cỏch kim tra
P(x, y)
F(x, y)
beõn trong
<0
naốm treõn
=0
beõn ngoaứi
>0
bờn ngoi
bờn trong
Trang 12
Thuật toán MidPoint
Xây dựng biến fi
Trung điểm M của AB
M(xi + 1, yi – 1/2)
Biến fi
yi
i
yi-1/2
A
M
fi = F(M)
fi = F(xi + 1, yi – 1/2)
yi-1
B
xi
xi+1
Trang 13
Thuật toán MidPoint
Công thức tính fi
1
fi = x + 2xi + y − yi + 1− r +
4
Công thức tính fi nguyên
2
i
2
i
2
fi = xi2 + 2xi + yi2 − yi + 1− r 2
Trang 14
Khi fi không nguyên !
Có hai cách giải quyết để fi thành nguyên
Cách 1
fi < 0 ⇔ kfi < 0
fi ≥ 0 ⇔ kfi ≥ 0
Với k > 0
Cách 2
fi < 0 ⇔ [fi] < 0
fi ≥ 0 ⇔ [fi] ≥ 0
Trang 15
Thuật toán MidPoint
Thuật toán
Bước 1 Xác định điểm đầu tiên
x1 = 0
y1 = r
Bước 2 Xác định những điểm tiếp theo
Lặp xi < yi
fi = …
fi < 0
xi+1 = xi + 1
yi+1 = yi
fi ≥ 0
xi+1 = xi + 1
yi+1 = yi – 1
Trang 16
Thuật toán MidPoint
Cách tính fi cải tiến
f1 = 1 – r
fi < 0
fi+1 = fi + 2xi + 3
fi ≥ 0
fi+1 = fi + 2xi – 2yi + 5
Trang 17