Full bài tập chi tiết đồ họa máy tính của đại học công nghệ thông tin. Đầy đủ các thuật toán vẽ hình, tô màu, xén hình...................................................................................................
Trang 1Nguyễn Tấn Trần Minh Khang
Nguyễn Hoàng Ngân
Trang 2CHƯƠNG 1 ĐƯỜNG THẲNG 1
1.1 ĐƯỜNGTHẲNG𝟎 < 𝒎 < 𝟏 1
1.2 ĐƯỜNGTHẲNG𝒎 > 𝟏 4
1.3 ĐƯỜNGTHẲNG−𝟏 < 𝒎 < 𝟎 4
1.4 ĐƯỜNGTHẲNG 𝒎 < −𝟏 4
1.5 BÀITẬPNÂNGCAOCHƯƠNG1 5
1.6 GIẢIBÀITẬPĐƯỜNGTHẲNG𝟎 < 𝒎 < 𝟏 6
1.7 GIẢIBÀITẬPĐƯỜNGTHẲNG𝒎 > 𝟏 44
1.8 GIẢIBÀITẬPĐƯỜNGTHẲNG−𝟏 < 𝒎 < 𝟎 56
1.9 GIẢIBÀITẬPĐƯỜNGTHẲNG𝒎 < −𝟏 67
1.10 GIẢIBÀITẬPNÂNGCAOCHƯƠNG1 79
CHƯƠNG 2 CÁC ĐƯỜNG CONIC 79
2.1 ĐƯỜNGTRÒN 79
2.2 ĐƯỜNGELIP 79
2.3 ĐƯỜNGPARABOL 80
2.4 ĐƯỜNGCUBIC 80
2.5 ĐƯỜNGHYPERBOL 80
2.6 GIẢIBÀITẬPĐƯỜNGTRÒN 81
2.7 GIẢIBÀITẬPĐƯỜNGELIP 81
2.8 GIẢIBÀITẬPĐƯỜNGPARABOL 84
2.9 GIẢIBÀITẬPĐƯỜNGCUBIC 85
2.10 GIẢIBÀITẬPĐƯỜNGHYPERBOL 85
CHƯƠNG 3 PHÉP BIẾN ĐỔI AFFINE 86
3.1 TỔNGQUÁT 86
3.2 PHÉPBIẾNĐỔITỊNHTIẾN 86
3.3 PHÉPBIẾNĐỔITỈLỆ 88
3.4 PHÉPQUAY 89
3.5 BÀITẬPCHƯƠNG3 90
3.6 GIẢIBÀITẬPCHƯƠNG3 93
CHƯƠNG 4 VẼ HÌNH 146
4.1 ĐAGIÁCĐỀU 146
4.2 NGÔISAO 147
Trang 3ii
4.3 CƠSỞTOÁNHỌC 149
4.4 GIẢIBÀITẬPĐAGIÁCĐỀU 150
4.5 GIẢIBÀITẬPNGÔISAO 171
CHƯƠNG 5 XÉN HÌNH 178
5.1 THUẬTTOÁNCOHEN-SUTHERLAND 178
5.2 THUẬTTOÁNLIANG-BARSKY 179
5.3 THUẬTTOÁNSUTHERLAND-HODGEMAN 179
5.4 GIẢIBÀITẬPTHUẬTTOÁNCOHEN-SUTHERLAND 181
5.5 GIẢIBÀITẬPTHUẬTTOÁNLIANG-BARSKY 188
5.6 GIẢIBÀITẬPTHUẬTTOÁNSUTHERLAND-HODGEMAN 199
CHƯƠNG 6 TÔ MÀU 202
6.1 CÁCBÀITẬPCƠBẢN 202
6.2 THUẬTTOÁNTÔMÀUDỰATHEOĐƯỜNGBIÊN 202
6.3 THUẬTTOÁNTÔMÀUDỰATHEODÒNGQUÉT 203
6.4 TÔPHẦNGIAOGIỮACÁCĐỐITƯỢNG 205
6.5 GIẢICÁCBÀITẬPCƠBẢN 206
6.6 GIẢICÁCBÀITẬPTHUẬTTOÁNTÔMÀUDỰATHEOĐƯỜNGBIÊN 229 6.7 GIẢICÁCBÀITẬPTHUẬTTOÁNTÔMÀUDỰATHEODÒNGQUÉT 235 6.8 GIẢICÁCBÀITẬPTÔPHẦNGIAOGIỮACÁCĐỐITƯỢNG 243
CHƯƠNG 7 CÁC BÀI TOÁN HÌNH HỌC 258
7.1 BÀITẬP 258
7.2 GIẢIBÀITẬP 260
CHƯƠNG 8 ĐƯỜNG CONG BEZIER 282
8.1 ĐƯỜNGCONGBEZIERTỔNGQUÁT 282
8.2 ĐƯỜNGCONGBEZIERBẬC1 283
8.3 ĐƯỜNGCONGBEZIERBẬC2 283
8.4 ĐƯỜNGCONGBEZIERBẬC3 284
8.5 BÀITẬPCHƯƠNG8 284
8.6 GIẢIBÀITẬPCHƯƠNG8 286
Trang 4Bài 2 Trình bày thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 < 𝑚 < 1
và 𝑑𝑥 > 0 (sinh viên chỉ vẽ lưu đồ)
Bài 3 Tìm điểm nguyên của đoạn 𝐴𝐵 với 𝐴(1,1) và 𝐵(11,5) bằng thuật toán 𝐷𝐷𝐴
Bài 4 Tìm điểm nguyên của đoạn 𝐶𝐷 với 𝐶(320,135) và 𝐷(332,141) bằng thuật toán 𝐷𝐷𝐴 (trình bày tương tự bài 3)
Bài 5 Tìm điểm nguyên của đoạn 𝐸𝐹 với 𝐸(56,13) và 𝐹(68,17) bằng thuật toán 𝐷𝐷𝐴 (trình bày tương tự bài 3)
Bài 6 Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 < 𝑚 < 1 và
𝑑𝑥 < 0
Bài 7 Trình bày thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 < 𝑚 < 1
và 𝑑𝑥 < 0 (sinh viên chỉ vẽ lưu đồ)
Bài 8 Tìm điểm nguyên của đoạn 𝐴𝐵 𝑣ớ𝑖 𝐴(16,10) và 𝐵(5,7) bằng thuật toán 𝐷𝐷𝐴 (trình bày tương
Bài 12 Trình bày thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 > 0 (sinh viên chỉ vẽ lưu đồ)
Bài 13 Tìm điểm nguyên của đoạn 𝐴𝐵 với 𝐴(1,1) và 𝐵(11,5) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚
Trang 5Bài 14 Tìm điểm nguyên của đoạn 𝐶𝐷 với 𝐶(320,135) và 𝐷(332,141) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚
(trình bày tương tự bài 13)
Bài 15 Tìm điểm nguyên của đoạn 𝐸𝐹 với 𝐸(56,13) và 𝐹(68,17) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 (trình
bày tương tự bài 13)
Bài 16 Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 < 0
Bài 17 Trình bày thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 < 0 (sinh viên chỉ vẽ lưu đồ)
Bài 18 Tìm điểm nguyên của đoạn 𝐴𝐵 với 𝐴(16,10) và 𝐵(5,7) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 (trình
bày tương tự bài 13)
Bài 19 Tìm điểm nguyên của đoạn 𝐶𝐷 với 𝐶(571,117) và 𝐷(557,110) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚
(trình bày tương tự bài 13)
Bài 20 Tìm điểm nguyên của đoạn 𝐸𝐹 với 𝐸(126,12) và 𝐹(116,10) bằng thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚
(trình bày tương tự bài 13)
1.1.3 Thuật toán 𝑴𝒊𝒅𝒑𝒐𝒊𝒏𝒕
Bài 21 Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 < 𝑚 <
1 và 𝑑𝑥 > 0
Bài 22 Trình bày thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 > 0 (sinh viên chỉ vẽ lưu đồ)
Bài 23 Tìm điểm nguyên của đoạn 𝐴𝐵 với 𝐴(1,1) và 𝐵(11,5) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (Giống 13) Bài 24 Tìm điểm nguyên của đoạn 𝐶𝐷 với 𝐶(320,135) và 𝐷(332,141) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡
(trình bày tương tự bài 23) Giống 14
Bài 25 Tìm điểm nguyên của đoạn 𝐸𝐹 với 𝐸(56,13) và 𝐹(68,17) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (trình
bày tương tự bài 23) Giống 15
Bài 26 Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 < 𝑚 <
1 và 𝑑𝑥 < 0 Coi lại
Bài 27 Trình bày thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 < 0 (sinh viên chỉ vẽ lưu đồ)
Bài 28 Tìm điểm nguyên của đoạn 𝐴𝐵 với 𝐴(16,10) và 𝐵(5,7) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (trình bày
tương tự bài 23) Giống 18
Bài 29 Tìm điểm nguyên của đoạn 𝐶𝐷 với 𝐶(571,117) và 𝐷(557,110) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡
(trình bày tương tự bài 23) Giống 19
Trang 6Bài 30 Tìm điểm nguyên của đoạn 𝐸𝐹 với 𝐴(126,12) và 𝐵(116,10) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (trình
bày tương tự bài 23) Giống 20
Trang 8Bài 45 Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥1, 𝑦1) và (𝑥1, 𝑦1) có 𝑚 <
1.5 BÀI TẬP NÂNG CAO CHƯƠNG 1
Bài 49 Trình bày các bước chính để vẽ đường cong 𝑦 = 𝑓(𝑥) theo phương pháp Bresenham Minh
họa bằng cách xây dựng thuật toán vẽ đường thẳng qua hai điểm 𝐴(𝑥`, 𝑦`), 𝐵(𝑥a, 𝑦a) trong trường hợp hệ số góc |𝑚| > 1 Hoàn chỉnh thuật toán trên bằng ngôn ngữ C Áp dụng tìm những điểm nguyên nằm trên đường thẳng 𝐴𝐵 và 𝐶𝐷 theo thuật toán trên biết: A(15,6), B(10,16) C(8,16), D(14,4) (Đề Thi Tốt Nghiệp Cao Đẳng Đồng Nai)
Trang 91.6 GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝟎 < 𝒎 < 𝟏
1.6.1 Thuật toán DDA
1
1
1
i i i
i i
y y y x x
Trang 11Bài 2 Trình bày thuật toán 𝑫𝑫𝑨 vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có 𝟎 <
𝑚 < 1 và 𝒅𝒙 > 0 (sinh viên chỉ vẽ lưu đồ)
- Trình bày lưu đồ thuật toán
-A
B y y
-Dx Dy
m =
Trang 12x Y x nguyên Điểm nguyên
Trang 13Bài 4 Tìm điểm nguyên của đoạn 𝑪𝑫 với 𝑪(𝟑𝟐𝟎, 𝟏𝟑𝟓) 𝒗à 𝑫(𝟑𝟑𝟐, 𝟏𝟒𝟏) bằng thuật toán 𝐷𝐷𝐴
(trình bày tương tự bài 3)
- Trình bày lưu đồ thuật toán
-E
F y y
-Dx Dy
m =
Trang 14X Y y nguyên Điểm nguyên
- Với thuật toán 𝐷𝐷𝐴 việc quyết định chọn yi+1 là yi hay yi -1 được dựa vào phương trình
đường thẳng y=mx+b Nghĩa là, ta sẽ tính I(x i - 1, y) thuộc về đường thẳng thực và yi+1 sẽ là
î í
1
1
1
i i i
i i
y y y x x
Trang 16Bài 7 Trình bày thuật toán 𝑫𝑫𝑨 vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có 𝟎 <
𝑚 < 1 và 𝒅𝒙 < 0 (sinh viên chỉ vẽ lưu đồ)
-A
B y y
-Dx Dy
m =
Trang 18Bài 9 Tìm điểm nguyên của đoạn CD với C(571,117) và D(557,110) bằng thuật toán 𝑫𝑫𝑨 (trình
bày tương tự bài 3)
- Trình bày lưu đồ thuật toán
bày tương tự bài 3)
- Trình bày lưu đồ thuật toán
-E
F y y
-Dx Dy
m =
Trang 19X Y y nguyên Điểm nguyên
1.6.2 Thuật toán Bresenham
𝟎 < 𝑚 < 1 và 𝒅𝒙 > 0
- Với các đoạn thẳng dạng này nếu (xi,yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen) thì điểm cần chọn (xi+1, yi+1) ở bước thứ i+1 sẽ là một trong hai trường hợp của hình vẽ sau:
- Như vậy:
î í
1
1
1
i i i
i i
y y y x x
Trang 20- Với thuật toán Bresenham việc quyết định chọn yi+1 là yi hay yi+1 được dựa vào vị trí tương đối của điểm I so với điểm S và điểm P
Trang 21pi+1 – pi = 2Dy(xi+1 – xi) – 2Dx (yi+1 – yi)
pi+1 = pi + 2Dy(xi+1 – xi) – 2Dx (yi+1 – yi)
pi+1 = pi + 2Dy – 2Dx (yi+1 – yi)
- Từ đây ta suy ra được cách tính pi+1 từ pi như sau:
- Giá trị p0 được tính từ điểm vẽ đầu tiên (𝑥-, 𝑦-)
pi = 2Dyxi – 2Dxyi + 2bDx + 2Dy – Dx
p0 = 2Dyx1 – 2Dxy1 + 2bDx + 2Dy – Dx
Trang 23Bài 12 Trình bày thuật toán Bresenham vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝟎 < 𝑚 < 1 và 𝒅𝒙 > 0 (sinh viên chỉ vẽ lưu đồ)
- Trình bày thuật toán
- Tính Dx = xB - xA = 11 - 1 = 10
- Tính Dy = yB - yA = 5 - 1 = 4
Trang 25Bài 14 Tìm điểm nguyên của đoạn CD với C(320,135) và D(332,141) bằng thuật toán Bresenham
(trình bày tương tự bài 13)
- Trình bày thuật toán
Trang 26Bài 15 Tìm điểm nguyên của đoạn EF với E(56,13) và F(68,17) bằng thuật toán Bresenham
(trình bày tương tự bài 13)
- Trình bày thuật toán
Trang 27Bài 16 Thiết kế thuật toán Bresenham vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝟎 < 𝑚 < 1 và 𝒅𝒙 < 0
- Với các đoạn thẳng dạng này nếu (xi,yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen) thì điểm cần chọn (xi+1, yi+1) ở bước thứ i+1 sẽ là một trong hai trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán Bresenham việc quyết định chọn yi+1 là yi hay
yi - 1 được dựa vào vị trí tương đối của điểm I so với điểm S và điểm P
1
1
1
i i i
i i
y y y x x
Trang 28pi+1 – pi = 2Dx(yi+1 – yi) – 2Dy (xi+1 – xi)
pi+1 = pi + 2Dx(yi+1 – yi) – 2Dy (xi+1 – xi)
pi+1 = pi + 2Dy + 2Dx (yi+1 – yi)
- Từ đây ta suy ra được cách tính pi+1 từ pi như sau:
d1 – d2 < 0
d1 < d2
Chọn S
yi+1 = yi
Trang 29- Giá trị p0 được tính từ điểm vẽ đầu tiên (𝑥-, 𝑦-)
pi = 2Dxyi – 2Dyxi + 2Dy– 2bDx – Dx
p0 = 2Dxy1 – 2Dyx1 + 2Dy– 2bDx – Dx
Trang 30Bài 17 Trình bày thuật toán Bresenham vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝟎 < 𝑚 < 1 và 𝒅𝒙 < 0 (sinh viên chỉ vẽ lưu đồ)
Trang 31Bài 18 Tìm điểm nguyên của đoạn AB với A(16,10) và B(5,7) bằng thuật toán Bresenham (trình
bày tương tự bài 13)
- Trình bày lưu đồ thuật toán
Trang 32Bài 19 Tìm điểm nguyên của đoạn CD với C(571,117) và D(557,110) bằng thuật toán Bresenham
(trình bày tương tự bài 13)
- Trình bày lưu đồ thuật toán
(trình bày tương tự bài 13)
- Trình bày lưu đồ thuật toán
Trang 341.6.3 Thuật toán Midpoint
𝟎 < 𝑚 < 1 và 𝒅𝒙 > 0
- Với các đoạn thẳng dạng này nếu (xi,yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen) thì điểm cần chọn (xi+1, yi+1) ở bước thứ i+1 sẽ là một trong hai trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán Midpoint việc quyết định chọn yi+1 là yi hay yi+1 được dựa vào xét dấu của
𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 x𝑥i+ 1, 𝑦i+-1y là trung điểm của điểm S và điểm P
1
1
1
i i i
i i
y y y x x
Trang 35pi+1-pi=2F(x i+1 +1,y i+1 +0.5)-2F(x i +1,y i +0.5)
𝑝i„-− 𝑝i= 2[𝐴(𝑥i„-− 𝑥i) + 𝐵(𝑦i„-− 𝑦i) + C]
Trang 38Bài 22 Trình bày thuật toán Midpoint vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝟎 < 𝑚 < 1 và 𝒅𝒙 > 0 (sinh viên chỉ vẽ lưu đồ)
Trang 40Bài 24 Tìm điểm nguyên của đoạn CD với C(320,135) và D(332,141) bằng thuật toán Midpoint
(trình bày tương tự bài 23) Giống 14
- Trình bày thuật toán
Trang 41Bài 25 Tìm điểm nguyên của đoạn EF với E(56,13) và F(68,17) bằng thuật toán Midpoint (trình
bày tương tự bài 23) Giống 15
- Trình bày thuật toán
Trang 42Bài 26 Thiết kế thuật toán Midpoint vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có 𝟎 <
𝑚 < 1 và 𝒅𝒙 < 0 Coi lại
- Với các đoạn thẳng dạng này nếu (xi,yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen) thì điểm cần chọn (xi+1, yi+1) ở bước thứ i+1 sẽ là một trong hai trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán Midpoint việc quyết định chọn yi+1 là yi hay yi - 1 được dựa vào xét dấu của
Midpoint(xi-1,yi-0.5) là trung điểm của điểm S và điểm P
1
1
1
i i i
i i
y y y x x
Trang 43𝑝i„-− 𝑝i= 2𝐹(𝑥i„-− 1, 𝑦i„-− 0.5) − 2𝐹(𝑥i− 1, 𝑦i− 0.5)
𝑝i„-− 𝑝i= 2 •𝐴(𝑥i„-− 1) + 𝐵 Š𝑦i„-−1
2‹ + CŽ −2 ˆ𝐴(𝑥i− 1) + 𝐵 x𝑦i−-1y + 𝐶‰
𝑝i„-− 𝑝i= 2𝐴(𝑥i„-− 𝑥i) + 2𝐵(𝑦i„-− 𝑦i)
Trang 46Bài 27 Trình bày thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 0 <
𝑚 < 1 và 𝑑𝑥 < 0 (sinh viên chỉ vẽ lưu đồ)
Bài 28 Tìm điểm nguyên của đoạn AB với A(16,10) và B(5,7) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (trình bày
tương tự bài 23) Giống 18
Bài 29 Tìm điểm nguyên của đoạn CD với C(571,117) và D(557,110) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡
(trình bày tương tự bài 23) Giống 19
Bài 30 Tìm điểm nguyên của đoạn EF với A(126,12) và B(116,10) bằng thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 (trình
bày tương tự bài 23) Giống 20
Trang 471.7 GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝒎 > 𝟏
và dy>0
- Với các đoạn thẳng dạng này nếu (xi, yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen), thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 sẽ là 1 trong 2 trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán 𝐷𝐷𝐴 việc quyết định chọn xi+1 là xi hay xi +1 được dựa vào phương trình đường thẳng y=mx+b Nghĩa là, ta sẽ tính I(x, y i+1) thuộc về đường thẳng thực và xi+1 sẽ là giá trị làm tròn của giá trị hoành độ x thực
1
1
i i
i i i
y y
x x x
b mx
y= +
b y
mx= ( y b )
Trang 48x = 1 i - + 1
Trang 49Bài 32 Thiết kế thuật toán 𝑫𝑫𝑨 vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có 𝒎 > 1
và dy<0
- Với các đoạn thẳng dạng này nếu (xi, yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen), thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 sẽ là 1 trong 2 trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán 𝐷𝐷𝐴 việc quyết định chọn xi+1 là xi hay xi - 1 được dựa vào phương trình đường thẳng y=mx+b Nghĩa là, ta sẽ tính I(x, y i -1) thuộc về đường thẳng thực và xi+1 sẽ là giá trị làm tròn của giá trị hoành độ x thực
1
1
i i
i i i
y y
x x x
b mx
y= +
b y
mx= ( y b )
Trang 50x = 1 i - - 1
Trang 51Bài 33 Thiết kế thuật toán Bresenham vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝒎 > 1 và dy>0
- Với các đoạn thẳng dạng này nếu (xi, yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen), thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 sẽ là 1 trong 2 trường hợp của hình vẽ sau:
1
1
i i
i i i
y y
x x x
Trang 52pi+1 – pi = 2Dx(yi+1 – yi) – 2Dy (xi+1 – xi)
pi+1 = pi + 2Dx(yi+1 – yi) – 2Dy (xi+1 – xi)
pi+1 = pi + 2Dx – 2Dy (xi+1 – xi)
- Từ đây ta suy ra được cách tính pi+1 từ pi như sau:
+ Nếu pi≤0 thì Dy ( d1 – d2 ) ≤ 0
d1 – d2 ≤ 0
d1 ≤ d2
b y
mx= ( y b )
x = i + 1
Trang 53-xi+1 = xi
pi+1 = pi + 2Dx + Nếu pi>0 thì Dy ( d1 – d2 ) > 0
Trang 55Bài 34 Thiết kế thuật toán Bresenham vẽ đường thẳng đi qua hai điểm (𝒙𝟏, 𝒚𝟏) và (𝒙𝟐, 𝒚𝟐) có
𝒎 > 1 và dy<0
- Với các đoạn thẳng dạng này nếu (xi, yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen), thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 sẽ là 1 trong 2 trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán Bresenham việc quyết định chọn xi+1 là xi hay
xi – 1 được dựa vào vị trí tương đối của điểm I so với điểm S và điểm P
1
1
i i
i i i
y y
x x x
Trang 56pi+1 – pi = 2Dy(xi+1 – xi) – 2Dx (yi+1 – yi)
pi+1 = pi + 2Dy(xi+1 – xi) – 2Dx (–1)
pi+1 = pi + 2Dy(xi+1 – xi) + 2Dx
pi+1 = pi + 2Dx + 2Dy (xi+1 – xi)
- Từ đây ta suy ra được cách tính pi+1 từ pi như sau:
+ Nếu pi≤0 thì Dy ( d1 – d2 ) ≤ 0
d1 – d2 ≥ 0
b y
mx= ( y b )
x = i- 1
Trang 57-d1 ≥ d2
Chọn P
xi+1 = xi – 1
pi+1 = pi + 2Dx – 2Dy + Nếu pi>0 thì Dy ( d1 – d2 ) > 0
Trang 58Bài 35 Thiết kế thuật toán Midpoint vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 𝑚 > 1 và dy>0
Bài 36 Thiết kế thuật toán Midpoint vẽ đường thẳng đi qua hai điểm (𝑥-, 𝑦-) và (𝑥1, 𝑦1) có 𝑚 > 1 và dy<0
Trang 591.8 GIẢI BÀI TẬP ĐƯỜNG THẲNG −𝟏 < 𝒎 < 𝟎
𝑚 < 0 và 𝒅𝒙 > 0
- Với các đoạn thẳng dạng này nếu (xi,yi) là điểm vẽ đã được xác định ở bước thứ i (điểm màu đen) thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 là 1 trong 2 trường hợp của hình vẽ sau:
- Như vậy:
- Với thuật toán 𝐷𝐷𝐴 việc quyết định chọn yi+1 là yi hay yi –1 được dựa vào phương trình
đường thẳng y=mx+b Nghĩa là, ta sẽ tính I(x i + 1, y) thuộc về đường thẳng thực và yi+1 sẽ là giá trị làm tròn của giá trị tung độ y thực
1
1
1
i i i
i i
y y y x x