BÀI TẬP ĐỒ HỌA
Mục đích
- Củng cố kiến thức môn học - Rèn luyện kỹ thuật lập trình đồ họa.
Yêu cầu
- Mỗi sinh viên chọn một bài tập (không được trùng nhau) - Viết báo cáo trình bày những kiến thức cơ sở có liên quan và cài đặt
chương trình demo
- Trình bày bài tập của mình trước lớp theo phân công
- Kết quả đánh giá là điểm .
Bài tập
1. Viết chương trình vẽ bầu trời có 10000 điểm sao, mỗi điểm sao xuất hiện với một màu ngẫu nhiên. Những điểm sao này hiện lên rồi từ từ tắt cũng rất ngẫu nhiên.
2. Viết chương trình vẽ lá cờ tổ quốc (Cờ đỏ, sao vàng) 3. Viết chương trình thể hiện dao động của con lắc đơn 4. Viết chương trình thể hiện một ô tô chuyển động ngang qua màn hình. Nếu
gặp biên màn hình thì chuyển động theo chiều ngược lại
5. Viết chương trình mô phỏng sự va đập của một trái bóng trên màn hình. (Nếu gặp đường biên màn hình thì đổi hướng chuyển động theo định luật phản xạ ánh sáng)
6. Viết chương trình thực hiện 2 thao tác sau :
a. Khởi tạo chế độ đồ họa, đặt màu nền, đặt màu chữ, định dạng chữ (settextstyle(f,d,s)), xuất một chuỗi ký tự ra màn hình. Đổi font, hướng, kích thước.
b. Xuất một chuỗi ra màn hình, chuỗi này có tô bóng (nội dung chuỗi
ký tự, màu tô, màu bóng là được nhập từ bàn phím).
7. Viết chương trình vẽ đoạn thẳng AB với màu color theo giải thuật DDA. Biết rằng tọa độ A, B, color được nhập từ bàn phím. Trang trí màu nền, ghi chú các tọa độ A, B ở hai đầu đoạn thẳng.
8. Tương tự như bài tập 3 nhưng sử dụng giải thuật Bresenham. Lưu ý các
trường hợp đặc biệt của hệ số góc.
9. Tổng hợp bài tập 4, viết chương trình vẽ đường thằng bằng giải thuật Bresenham cho tất cả các trường hợp của hệ số góc. Lưu ý xét trường hợp đặc biệt khi đường thẳng song song với trục tung hay với trục hoành.
10. Viết chương trình nhập tọa độ 3 điểm A, B, C từ bàn phím. Tìm tọa độ điểm D thuộc AB sao cho CD vuông góc AB. Vẽ đoạn thẳng AB và CD. 11. Viết chương trình xét vị trí tương đối của 2 đoạn thẳng AB và CD. Biết rằng trong màn hình đồ họa đoạn thẳng AB và CD được gọi là cắt nhau khi hai điểm A, B ở về hai phía của CD và ngược lại.
12. Viết chương trình vẽ đường tròn theo giải thuật đơn giản (đối xứng). 13. Viết chương trình vẽ đường tròn theo giải thuật Bresenham. 14. Viết chương trình vẽ đường tròn theo giải thuật MidPoint. 15. Viết chương trình vẽ một đường tròn tâm O bán kính R. Vẽ các đường tròn đồng tâm với O, có bán kính chạy từ 1 đến R. Sau đó xoá các đường tròn đồng tâm này và vẽ các đường tròn đồng tâm khác đi từ R đến 1.
16. Viết chương trình vẽ một đường tròn tâm O bán kính R. Hãy vẽ một đoạn
thẳng từ tâm O độ dài R. Hãy quay đoạn thẳng này quanh đường tròn.
17. Viết chương trình vẽ Elippse có bán kính lớn là a, bán kính nhỏ là b và một đường tròn nội tiếp Elippse. Tô đường tròn bằng các đường tròn đồng tâm. Sau đó tô elippse bằng các elippse đồng tâm có bán kính lớn chạy từ b đến a, bán kính nhỏ là b.
18. Viết chương trình vẽ 3 hình chữ nhật, hình vuông và hình bình hành nội
tiếp trong đường tròn.
19. Viết chương trình vẽ một tam giác. Tọa độ các đỉnh được nhập từ bàn
phím, mỗi cạnh có một màu khác nhau.
20. Viết chương trình xét tính lồi lõm của một đa giác bằng cách thiết lập
phương trình đường thẳng đi qua các cạnh của đa giác.
21. Viết chương trình xét tính lồi lõm của một đa giác bằng cách thiết lập các
véc tơ chỉ phương của các cạnh.
22. Viết chương trình vẽ một đa giác n đỉnh, xét xem một điểm P nào đó có
thuộc đa giác không ?
23. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô đơn
giản (Tìm xmin, ymin, xmax, ymax).
24. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô đơn
giản.
25. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô biên. Lưu ý cho các trường hợp của đa giác: hình chữ nhật, đa giác lồi, đa giác lõm.
26. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô
biên.
27. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật scan-
line.
28. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô
scanline.
29. Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau. Tô phần giao của hai đường tròn đó. Tô phần bù của C2. Tô phần bù của C1. Lưu ý rằng 3 màu tô này phải khác nhau.
30. Vẽ một hình bình hành bằng cách sử dụng phép tịnh tiến. (Vẽ đoạn thẳng AB, sau đó tịnh tiến AB thành đoạn thẳng CD//AB, vẽ AD, Tịnh tiến AD thành BC.
31. Viết chương trình vẽ một hình vuông ABCD
a. Tịnh tiến hình vuông đó đến vị trí khác. b. Phóng to hình vuông ABCD. c. Biến dạng hình vuông thành hình thoi.
32. Vẽ một elip, sau đó vẽ thêm 3 elip khác có cùng tâm với elip đã cho, có độ
dãn ở trục Ox là K và Oy là 1.
33. Vẽ một elip nghiêng một góc G độ có các trục không song song với các
trục tọa độ.
34. Vẽ một bông hoa bằng cách vẽ các elip nghiêng một góc G độ với các màu
khác nhau. Vẽ đến khi nào ấn phím bất kỳ thì ngưng.
35. Viết chương trình mô phỏng sự chuyển động của elip bằng cách cho elip
này quay quanh tâm của nó.
36. Viết chương trình mô phỏng sự chuyển động của trái đất quay quanh mặt
trời.
37. Viết chương trình mô phỏng phép tịnh tiến trong mặt phẳng. 38. Viết chương trình mô phỏng phép biến đổi tỉ lệ trong mặt phẳng. 39. Viết chương trình mô phỏng phép quay trong mặt phẳng. 40. Viết chương trình mô phỏng phép biến dạng trong mặt phẳng. 41. Viết chương trình vẽ một đường tròn tâm O bán kính R. Vẽ một đường
kính AB. Quay đường kính này quanh tâm đường tròn.
42. Viết chương trình tạo cửa sổ hình chữ nhật có tọa độ các điểm dưới bên trái và điểm trên bên phải lần lượt là (Xmin, Ymin) và (Xmax, Ymax). Hãy xét một điểm P(x,y) có nằm bên trong cửa sổ không ?
43. Sử dụng thuật toán Cohen - Sutherland (phân chia mã vùng) xét bài toán xén các đoạn thẳng được cho bởi các điểm P1(x1, y1), P2(x2, y2), P3(x3, y3), P4(x4, y4), P5(x5, y5), P6(x6, y6), P7(x7, y7), và P8(x8, y8) vào cửa sổ chữ nhật.
44. Cài đặt thuật toán clipping đường Liang-Barsky lên hệ thống của bạn. 45. Hãy nghĩ ra một thuật toán để thực hiện việc clipping đường bằng cách dùng phương pháp phân chia điểm ở giữa. Sự cài đặt phần mềm của thuật toán này có thuận lợi hơn hai thuật toán clipping đường đã được thảo luận trong chương không?
46. Thay đổi thuật toán clipping đa giác để cắt các vùng đa giác lõm một cách hợp lý. (Một phương pháp để thực hiện điều này là chia đa giác lõm ra làm các đa giác lồi.)
47. Viết thủ tục để cắt một ellipse bằng cách dùng cửa sổ chữ nhật. 48. Hãy phát triển một thuật toán clipping văn bản để cắt các kí tự đơn lẻ, giả
sử rằng các kí tự được định nghĩa trong một lưới điểm (pixel grid).
49. Viết một thủ tục thực hiện xóa một phần bất kì của hình ảnh đã được định
nghĩa, dùng kích thước cửa sổ xóa được xác định bất kỳ.
50. Viết các thủ tục để cài đặt các lệnh của cửa sổ và vùng quan sát. Tức là, các thủ tục có chứa tham số về hệ tọa độ trong các lệnh để thực hiện biến đổi sang vùng quan sát cho các cảnh cụ thể: clipping trong hệ tọa độ thế giới thực, chuyển đổi sang hệ tọa độ chuẩn hóa, sau cùng biến đổi đến hệ tọa độ thiết bị.
51. Viết chương trình mô phỏng phép tịnh tiến trong không gian 3 chiều. 52. Viết chương trình mô phỏng phép biến đổi tỉ lệ trong không gian 3 chiều. 53. Viết chương trình mô phỏng phép quay trục trong không gian 3 chiều. 54. Cài đặt một khối đa diện (ba chiều với các mặt phẳng) nằm trong góc 1/8 đầu tiên của hệ tọa độ theo quy tắc bàn tay trái (tất cả các giá trị định nghĩa các đỉnh của đối tượng là dương). Phát triển một thủ tục (procedure) để thực hiện phép chiếu song song (được xác định bất kỳ) lên mặt phẳng xy. 55. Cài đặt một khối đa diện (ba chiều với các mặt phẳng) nằm trong góc 1/8 đầu tiên của hệ tọa độ theo quy tắc bàn tay trái (tất cả các giá trị định nghĩa các đỉnh của đối tượng là dương). Thực hiện các phép quay đối tượng quanh các trục của hệ tọa độ.
56. Cài đặt một khối đa diện (ba chiều với các mặt phẳng) nằm trong góc 1/8 đầu tiên của hệ tọa độ theo quy tắc bàn tay trái (tất cả các giá trị định nghĩa các đỉnh của đối tượng là dương). Thực hiện một phép chiếu phối cảnh bất kỳ.
57. Viết một chương trình thực hiện chiếu phối cảnh một hình chóp cụt thành
một hình hộp thông thường.
58.Thay đổi thuật toán clipping đường Liang-Barsky hai chiều để cắt (clip) các đường ba chiều bởi một bởi một hình hộp (đã được xác định).
59.Viết chương trình vẽ đường cong Bezier. 60.Viết chương trình vẽ đường cong Bspline. 61.Viết chương trình vẽ đồ thị các hàm số sơ cấp.
DANH SÁCH SINH VIÊN LỚP CDTH10TH ĐĂNG KÝ BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH
TT
Họ và tên
Tên Đề tài
Đề tài số
Nguyễn Thị Lê Thị Ngọc Phạm Tuấn Lê Trung Nguyễn Quảng Lục Văn Phạm Ngọc Nguyễn Văn Bùi Văn Lê Hữu Trần Đức
An Anh Anh Anh Bắc Chiến Chiến Công Duy Duy Đạt Giáp Hà Hải Hải Hải Hải Hải Hiền Hiệp Hưng Hưng Kế Kiên Lâm Luân Nam
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Nguyễn Văn 13. Đỗ Hải 14. Đặng Ngọc 15. Đinh Thị Thanh 16. Nguyễn Quảng Lê Xuân 17. 18. Trần Thị 19. Nguyễn Bá 20. Lê Xuân 21. Nguyễn Văn 22. Đỗ Xuân 23. Cao Văn Trịnh Văn 24. Phạm Tùng 25. 26. Lê Văn 27. Nguyễn Thị Thảo Trịnh Duy Phùng Văn
28. 29.
30. Nguyễn Đình 31. Chu Văn Lê Hồng 32.
Nam Nguyê n Quý Sơn Sang
Phan Thị Lê Văn Trương Khắc Lê Huyền
33. Hoàng Văn 34. Vũ Văn 35. Khương Anh 36. Hoàng Thị 37. Hớ Ngọc 38. Nguyễn Văn 39. Lê Thị 40. Nguyễn Văn 41. Hoàng Anh 42. 43. 44. 45. 46. Vũ Văn 47. Nguyễn Ngọc 48. Nguyễn Đình Phí Trang 49. 50. Lương Thanh 51. Nguyễn Trọng 52. Bùi Thị 53. Nguyễn Tuấn Trương Tiến 54.
Sỹ Tài Tâm Thơm Thanh Thanh Thảo Thịnh Thọ Thủy Thủy Tiến Trang Tuấn Tuấn Tùng Tùng Tùng Tư Vân Việt Vũ