BÀITẬP
ĐỒHOẠ
MÁYTÍNH
Nguyễn Tấn Trần Minh Khang
Nguyễn Hoàng Ngân
TableofContents
CHƯƠNG 1
ĐƯỜNG THẲNG ........................................................... 1
1.1
ĐƯỜNG THẲNG 𝟎 < 𝒎 < 𝟏 ............................................... 1
1.2
ĐƯỜNG THẲNG 𝒎 > 𝟏 ...................................................... 4
1.3
ĐƯỜNG THẲNG −𝟏 < 𝒎 < 𝟎 ............................................ 4
1.4
ĐƯỜNG THẲNG 𝒎 < −𝟏................................................... 4
1.5
BÀI TẬP NÂNG CAO CHƯƠNG 1 ........................................... 5
1.6
GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝟎 < 𝒎 < 𝟏 ........................... 6
1.7
GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝒎 > 𝟏 .................................44
1.8
GIẢI BÀI TẬP ĐƯỜNG THẲNG −𝟏 < 𝒎 < 𝟎 .......................56
1.9
GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝒎 < −𝟏...............................67
1.10
GIẢI BÀI TẬP NÂNG CAO CHƯƠNG 1...................................79
CHƯƠNG 2
CÁC ĐƯỜNG CONIC.....................................................79
2.1
ĐƯỜNG TRÒN ...................................................................79
2.2
ĐƯỜNG ELIP .....................................................................79
2.3
ĐƯỜNG PARABOL .............................................................80
2.4
ĐƯỜNG CUBIC ..................................................................80
2.5
ĐƯỜNG HYPERBOL............................................................80
2.6
GIẢI BÀI TẬP ĐƯỜNG TRÒN ...............................................81
2.7
GIẢI BÀI TẬP ĐƯỜNG ELIP..................................................81
2.8
GIẢI BÀI TẬP ĐƯỜNG PARABOL .........................................84
2.9
GIẢI BÀI TẬP ĐƯỜNG CUBIC...............................................85
2.10
GIẢI BÀI TẬP ĐƯỜNG HYPERBOL ........................................85
CHƯƠNG 3
PHÉP BIẾN ĐỔI AFFINE ................................................86
3.1
TỔNG QUÁT ......................................................................86
3.2
PHÉP BIẾN ĐỔI TỊNH TIẾN ..................................................86
3.3
PHÉP BIẾN ĐỔI TỈ LỆ ...........................................................88
3.4
PHÉP QUAY .......................................................................89
3.5
BÀI TẬP CHƯƠNG 3 ...........................................................90
3.6
GIẢI BÀI TẬP CHƯƠNG 3 ....................................................93
CHƯƠNG 4
VẼ HÌNH ....................................................................146
4.1
ĐA GIÁC ĐỀU ................................................................... 146
4.2
NGÔI SAO........................................................................ 147
i
4.3
CƠ SỞ TOÁN HỌC ............................................................ 149
4.4
GIẢI BÀI TẬP ĐA GIÁC ĐỀU ............................................... 150
4.5
GIẢI BÀI TẬP NGÔI SAO .................................................... 171
CHƯƠNG 5
XÉN HÌNH ..................................................................178
5.1
THUẬT TOÁN COHEN-SUTHERLAND ................................. 178
5.2
THUẬT TOÁN LIANG-BARSKY ........................................... 179
5.3
THUẬT TOÁN SUTHERLAND - HODGEMAN ....................... 179
5.4
GIẢI BÀI TẬP THUẬT TOÁN COHEN-SUTHERLAND ............. 181
5.5
GIẢI BÀI TẬP THUẬT TOÁN LIANG-BARSKY........................ 188
5.6
GIẢI BÀI TẬP THUẬT TOÁN SUTHERLAND - HODGEMAN.... 199
CHƯƠNG 6
TÔ MÀU ....................................................................202
6.1
CÁC BÀI TẬP CƠ BẢN ....................................................... 202
6.2
THUẬT TOÁN TÔ MÀU DỰA THEO ĐƯỜNG BIÊN............... 202
6.3
THUẬT TOÁN TÔ MÀU DỰA THEO DÒNG QUÉT ................ 203
6.4
TÔ PHẦN GIAO GIỮA CÁC ĐỐI TƯỢNG ............................. 205
6.5
GIẢI CÁC BÀI TẬP CƠ BẢN ................................................ 206
6.6
GIẢI CÁC BÀI TẬP THUẬT TOÁN TÔ MÀU DỰA THEO ĐƯỜNG BIÊN
229
6.7
GIẢI CÁC BÀI TẬP THUẬT TOÁN TÔ MÀU DỰA THEO DÒNG QUÉT
235
6.8
GIẢI CÁC BÀI TẬP TÔ PHẦN GIAO GIỮA CÁC ĐỐI TƯỢNG... 243
CHƯƠNG 7
CÁC BÀI TOÁN HÌNH HỌC ..........................................258
7.1
BÀI TẬP ........................................................................... 258
7.2
GIẢI BÀI TẬP .................................................................... 260
CHƯƠNG 8
ĐƯỜNG CONG BEZIER ...............................................282
8.1
ĐƯỜNG CONG BEZIER TỔNG QUÁT.................................. 282
8.2
ĐƯỜNG CONG BEZIER BẬC 1............................................ 283
8.3
ĐƯỜNG CONG BEZIER BẬC 2............................................ 283
8.4
ĐƯỜNG CONG BEZIER BẬC 3............................................ 284
8.5
BÀI TẬP CHƯƠNG 8 ......................................................... 284
8.6
GIẢI BÀI TẬP CHƯƠNG 8 .................................................. 286
ii
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
CHƯƠNG 1
ĐƯỜNG THẲNG
ĐƯỜNG THẲNG 𝟎 < 𝒎 < 𝟏
1.1
1.1.1
Thuật toán 𝑫𝑫𝑨
Bài 1. 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 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
tự bài 3).
Bài 9. 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 3).
Bài 10. 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 3).
1.1.2
Thuật toán 𝑩𝒓𝒆𝒔𝒆𝒏𝒉𝒂𝒎
Bài 11. 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 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 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚.
Giáo trình Bài Tập Đồ Họa Máy Tính
1
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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.
Giáo trình Bài Tập Đồ Họa Máy Tính
2
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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.
Giáo trình Bài Tập Đồ Họa Máy Tính
3
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
1.2
ĐƯỜNG THẲNG 𝒎 > 𝟏
Bài 31. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1 và
𝑑𝑦 > 0.
Bài 32. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1 và
𝑑𝑦 < 0.
Bài 33. Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1
và 𝑑𝑦 > 0.
Bài 34. Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1
và 𝑑𝑦 < 0.
Bài 35. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1
và 𝑑𝑦 > 0.
Bài 36. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 > 1
và 𝑑𝑦 < 0.
1.3
ĐƯỜNG THẲNG −𝟏 < 𝒎 < 𝟎
Bài 37. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 < 𝑚 < 0
và 𝑑𝑥 > 0.
Bài 38. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 < 𝑚 < 0
và 𝑑𝑥 < 0.
Bài 39. Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 <
𝑚 < 0 và 𝑑𝑥 > 0.
Bài 40. Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 <
𝑚 < 0 và 𝑑𝑥 < 0.
Bài 41. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 <
𝑚 < 0 và 𝑑𝑥 > 0.
Bài 42. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có −1 <
𝑚 < 0 và 𝑑𝑥 < 0.
1.4
ĐƯỜNG THẲNG 𝒎 < −𝟏
Bài 43. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 < −1 và
𝑑𝑦 > 0.
Bài 44. Thiết kế thuật toán 𝐷𝐷𝐴 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 < −1 và
𝑑𝑦 < 0.
Giáo trình Bài Tập Đồ Họa Máy Tính
4
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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 và 𝑑𝑦 > 0.
Bài 46. Thiết kế thuật toán 𝐵𝑟𝑒𝑠𝑒𝑛ℎ𝑎𝑚 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 <
−1 và 𝑑𝑦 < 0.
Bài 47. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) có 𝑚 < −1
và 𝑑𝑦 > 0.
Bài 48. Thiết kế thuật toán 𝑀𝑖𝑑𝑝𝑜𝑖𝑛𝑡 vẽ đường thẳng đi qua hai điểm (𝑥- , 𝑦- ) và (𝑥1 , 𝑦1 ) 𝑐ó𝑚 < −1
và 𝑑𝑦 < 0.
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).
Giáo trình Bài Tập Đồ Họa Máy Tính
5
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
GIẢI BÀI TẬP ĐƯỜNG THẲNG 𝟎 < 𝒎 < 𝟏
1.6
1.6.1
Thuật toán DDA
Bài 1. Thiết kế thuật toán 𝑫𝑫𝑨 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 là 1 trong 2 trường hợp của hình vẽ sau:
-
Như vậy:
ì xi+1 = xi + 1
í
î yi+1 = {yi , yi + 1}
-
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(xi + 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.
-
Như vậy:
𝑦 = 𝑚𝑥 + 𝑏
𝑦h = 𝑚𝑥h + 𝑏
𝑦 = 𝑚(𝑥i + 1) + 𝑏
𝑦 = 𝑚𝑥i + 𝑚 + 𝑏
𝑦 = (𝑚𝑥i + 𝑏) + 𝑚
𝒚𝒔𝒂𝒖 = 𝒚𝒕𝒓ướ𝒄 + 𝒎
-
Lưu đồ thuật toán:
Giáo trình Bài Tập Đồ Họa Máy Tính
6
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Giáo trình Bài Tập Đồ Họa Máy Tính
7
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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 đồ).
Bài 3. Tìm điểm nguyên của đoạn AB với A(1,1) và B(11,5) bằng thuật toán 𝑫𝑫𝑨.
- Trình bày lưu đồ thuật toán.
- Tính
Dx = xB - x A= (11) – (1) = 10
- Tính
Dy = yB - y A = (5) – (1) = 4
- Tính m =
Dy
= 4/10=0.4
Dx
- Lập bảng.
x
Y
x nguyên
Điểm nguyên
1
1
1
(1,1)
Giáo trình Bài Tập Đồ Họa Máy Tính
8
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
x
Y
x nguyên
Điểm nguyên
2
1.4
1
(2,1)
3
1.8
2
(3,2)
4
2.2
2
(4,2)
5
2.6
3
(5,3)
6
3.0
3
(6,3)
7
3.4
3
(7,3)
8
3.8
4
(8,4)
9
4.2
4
(9,4)
10
4.6
5
(10,5)
11
5.0
5
(11,5)
Giáo trình Bài Tập Đồ Họa Máy Tính
9
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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.
- Tính
Dx = x D - xC = (332) – (320) = 12.
- Tính
Dy = yD - yC = (141) – (135) = 6.
- Tính m =
Dy
= 6/12 = 0.5
Dx
- Lập bảng:
X
Y
y nguyên
Điểm nguyên
320
135.0
135
(320,135)
321
135.5
136
(321,136)
322
136.0
136
(322,136)
323
136.5
137
(323,137)
324
137.0
137
(324,137)
325
137.5
138
(325,138)
326
138.0
138
(326,138)
327
138.5
139
(327,139)
328
139.0
139
(328,139)
329
139.5
140
(329,140)
330
140.0
140
(330,140)
331
140.5
141
(331,141)
332
141.0
141
(332,141)
Bài 5. 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 𝑫𝑫𝑨 (trình bày
tương tự bài 3).
- Trình bày lưu đồ thuật toán.
- Tính
Dx = xF - xE
- Tính
Dy = yF - yE = (17) – (13) = 4
- Tính m =
= (68) – (56) = 12
Dy
= 4/12=0.33
Dx
- Lập bảng:
Giáo trình Bài Tập Đồ Họa Máy Tính
10
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
X
Y
y nguyên
Điểm nguyên
56
13
13
(56,13)
57
13.33
13
(57,13)
58
13.66
14
(58,14)
59
13.99
14
(59,14)
60
14.32
14
(60,14)
61
14.65
15
(61,15)
62
14.98
15
(62,15)
63
15.31
15
(63,15)
64
15.64
16
(64,16)
65
15.97
16
(65,16)
66
16.30
16
(66,16)
67
16.63
17
(67,17)
68
16.96
17
(68,17)
Bài 6. Thiết kế thuật toán 𝑫𝑫𝑨 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 là 1 trong 2 trường hợp của hình vẽ sau:
-
Như vậy:
ì xi+1 = xi - 1
í
î yi+1 = {yi , yi - 1}
-
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(xi - 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.
Giáo trình Bài Tập Đồ Họa Máy Tính
11
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
-
Như vậy:
𝑦 = 𝑚𝑥 + 𝑏
𝑦h = 𝑚𝑥h + 𝑏
𝑦 = 𝑚(𝑥i − 1) + 𝑏
𝑦 = 𝑚𝑥i − 𝑚 + 𝑏
𝑦 = (𝑚𝑥i + 𝑏) − 𝑚
𝒚𝒔𝒂𝒖 = 𝒚𝒕𝒓ướ𝒄 − 𝒎
-
Lưu đồ thuật toán:
Giáo trình Bài Tập Đồ Họa Máy Tính
12
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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 đồ).
Bài 8. Tìm điểm nguyên của đoạn 𝑨𝑩 với 𝑨(𝟏𝟔, 𝟏𝟎) và 𝑩(𝟓, 𝟕) 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.
- Tính
Dx = xB - xA = (5) - (16) = -11.
- Tính
Dy = yB - yA = (7) - (10) = -3.
- Tính m =
Dy
= (-3)/( -11) = 0.27
Dx
Giáo trình Bài Tập Đồ Họa Máy Tính
13
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
- Lập bảng:
X
Y
Y nguyên
Điểm nguyên
16
10
10
(16,10)
15
9.73
10
(15,10)
14
9.46
9
(14,9)
13
9.19
9
(13,9)
12
8.92
9
(12,9)
11
8.65
9
(11,9)
10
8.38
8
(10,8)
9
8.11
8
(9,8)
8
7.84
8
(8,8)
7
7.57
8
(7,8)
6
7.3
7
(6,7)
5
7.03
7
(5,7)
Giáo trình Bài Tập Đồ Họa Máy Tính
14
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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.
- Tính
Dx = xD - xC = (557) - (571) = -14.
- Tính
Dy = yD - yC = (110) - (117)= -7.
- Tính m =
Dy
= (-7)/( -14) = 0.5
Dx
- Lập bảng:
X
Y
y nguyên
Điểm nguyên
571
117
117
(571,117)
570
116.5
117
(570,117)
569
116.0
116
(569,116)
568
115.5
116
(568,116)
567
115.0
115
(567,115)
566
114.5
115
(566,115)
565
114.0
114
(565,114)
564
113.5
114
(564,114)
563
113.0
113
(563,113)
562
112.5
113
(562,113)
561
112.0
112
(561,112)
560
111.5
112
(560,112)
559
111.0
111
(559,111)
558
110.5
111
(558,111)
557
110.0
110
(557,110)
Bài 10. Tìm điểm nguyên của đoạn EF với E(126,12) và F(116,10) 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.
- Tính
Dx = xF - xE = (116) - (126) = -10.
- Tính
Dy = yF - yE = (10) - (12) = -2.
- Tính m =
Dy
= (-2)/( -10) = 0.2
Dx
- Lập bảng:
Giáo trình Bài Tập Đồ Họa Máy Tính
15
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
1.6.2
X
Y
y nguyên
Điểm nguyên
126
12
12
(126,12)
125
11.8
12
(125,12)
124
11.6
12
(124,12)
123
11.4
11
(123,11)
122
11.2
11
(122,11)
121
11.0
11
(121,11)
120
10.8
11
(120,11)
119
10.6
11
(119,11)
118
10.4
10
(118,10)
117
10.2
10
(117,10)
116
10
10
(116,10)
Thuật toán Bresenham
Bài 11. 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:
ì xi+1 = xi + 1
í
î yi+1 = {yi , yi + 1}
Giáo trình Bài Tập Đồ Họa Máy Tính
16
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
-
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.
-
Đặt:
d1 = IS = y – yi
d2 = PI = (yi + 1) – y = yi + 1 – y
-
-
Việc chọn điểm vẽ (xi+1,yi+1) là điểm S hay điểm P được dựa vào việc so sánh d1 và d2:
+
Nếu d1 ≤ d2 chọn S
+
Nếu d1 > d2 chọn P
Đặt:
pi = Dx ( d1 – d2 )
pi = Dx ( (y – yi) – (yi + 1 – y) )
pi = Dx ( y – yi – yi – 1 + y )
pi = Dx ( 2y – 2yi – 1)
-
Mà: y = mx + b
yI = mxI + b
y = m(xi + 1) + b
uv
𝑦 = uw (𝑥i + 1)+b
-
Suy ra:
pi = Dx( 2y – 2yi – 1)
pi = 2Dx y – 2Dx yi – Dx
𝑝i = 2𝐷𝑥 x
uv
uw
(𝑥i + 1) + 𝑏y − 2𝐷𝑥𝑦i − 𝐷𝑥
pi = 2Dy(xi+1) + 2bDx – 2Dx yi – Dx
pi = 2Dyxi + 2Dy + 2bDx – 2Dx yi – Dx
pi = 2Dyxi – 2Dx yi + 2Dy + 2bDx – Dx
pi = 2Dyxi – 2Dx yi + c với c = 2Dy + 2bDx – Dx
-
-
Ta có:
pi = 2Dyxi – 2Dx yi + c
(1)
pi+1 = 2Dyxi+1 – 2Dx yi+1 + c
(2)
Lấy (2) trừ (1) ta được:
Giáo trình Bài Tập Đồ Họa Máy Tính
17
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
pi+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:
+
Nếu pi≤0 thì
Dx ( d1 – d2 ) ≤ 0
d1 – d2 ≤ 0
d1 ≤ d2
Chọn S
yi+1 = yi
pi+1 = pi + 2Dy
+
Nếu pi>0 thì
Dx ( d1 – d2 ) > 0
d1 – d2 > 0
d1 > d2
Chọn P
yi+1 = yi + 1
pi+1 = pi + 2Dy – 2Dx
-
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
p0 = 2Dyx1 –2Dx(mx1+b)+2bDx+2Dy – Dx
p0 =2Dyx1–2Dxmx1-2bDx +2bDx+2Dy–Dx
p0 = 2Dyx1 – 2Dyx1-2bDx + 2bDx + 2Dy – Dx
p0 = 2Dy – Dx
-
Lưu đồ thuật toán
Giáo trình Bài Tập Đồ Họa Máy Tính
18
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Giáo trình Bài Tập Đồ Họa Máy Tính
19
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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 đồ).
Bài 13. Tìm điểm nguyên của đoạn AB với A(1,1) và B(11,5) bằng thuật toán Bresenham.
-
Trình bày thuật toán.
-
Tính Dx = xB - xA = 11 - 1 = 10.
-
Tính Dy = yB - yA = 5 - 1 = 4.
Giáo trình Bài Tập Đồ Họa Máy Tính
20
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
-
Tính const1 = 2dy = 2(4) = 8
-
Tính const2 = 2dy - 2dx = 2(4) - 2(10) = 8 - 20 = -12
-
Tính p0 = 2dy - dx = 2(4) - 10 = 8 - 10 = -2
-
Lập bảng:
P
Y
X
Điểm nguyên
-2
1
1
(1,1)
6
1
2
(2,1)
-6
2
3
(3,2)
2
2
4
(4,2)
-10
3
5
(5,3)
-2
3
6
(6,3)
6
3
7
(7,3)
-6
4
8
(8,4)
2
4
9
(9,4)
-10
5
10
(10,5)
-2
5
11
(11,5)
Giáo trình Bài Tập Đồ Họa Máy Tính
21
Nguyễn Tấn Trần Minh Khang - Nguyễn Hoàng Ngân
Bà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.
-
Tính Dx = xD - xC = (332) – (320) = 12.
-
Tính Dy = yD - yC = (141) – (135) = 6.
-
Tính const1 = 2dy = 2(6) = 12.
-
Tính const2 = 2dy - 2dx = 2(6) - 2(12) = 12 - 24 = -12
-
Tính p0=2dy - dx = 2(6) - 12 = 12 - 12 = 0
-
Lập bảng:
P
Y
X
Điểm nguyên
0
135
320
(320,135)
12
135
321
(321,135)
0
136
322
(322,136)
12
136
323
(323,136)
0
137
324
(324,137)
12
137
325
(325,137)
0
138
326
(326,138)
12
138
327
(327,138)
0
139
328
(328,139)
12
139
329
(329,139)
0
140
330
(330,140)
12
140
331
(331,140)
0
141
332
(332,141)
Giáo trình Bài Tập Đồ Họa Máy Tính
22