Bài tập chương 7

Một phần của tài liệu Kỹ thuật lập trình vẽ và tô (Trang 157 - 159)

1. Phát triển một thủ tục, dựa trên kỹ thuật khử mặt sau, để xác định tất cả các mặt trước của một khối đa diện lồi với các mặt có màu khác nhau liên hệ đến mặt quan sát. Giả sử rằng đối tượng được định nghĩa trong hệ quan sát bàn tay trái với mặt xy dùng làm mặt quan sát.

2. Cài đặt thủ tục trong bài 1 vào một chương trình để chiếu trực giao các mặt nhìn thấy được của đối tượng lên một cửa sổ trong mặt phẳng quan sát. Đểđơn giản, giả sử rằng tất cả các phần của đối tượng nằm ở phía trước mặt phẳng quan sát. Ánh xạ cửa sổ lên một vùng quan sát màn hình để hiển thị.

3. Cài đặt thủ tục trong bài 1 vào một chương trình để tạo ra một hình chiếu phối cảnh của các mặt nhìn thấy được của đối tượng lên một cửa sổ trong mặt phẳng quan sát. Để đơn giản, giả sử rằng đối tượng nằm phía trước mặt phẳng quan sát. Ánh xạ cửa sổ lên một vùng quan sát màn hình để hiển thị.

4. Viết một chương trình để cài đặt thủ tục của bài 1 cho một ứng dụng động, quay

đối tượng một cách tăng dần xung quanh một trục, cái đâm xuyên qua đối tượng và song song với với mặt phẳng quan sát. Giả sử rằng đối tượng nằm hoàn toàn phía trước mặt phẳng quan sát. Dùng một phép chiếu song song trực giao để ánh xạ thành công các ảnh lên màn hình.

5. Dùng phương pháp vùng đệm độ sâu để hiển thị các mặt nhìn thấy được của một đối tượng bất kỳ, cái được định nghĩa trong hệ tọa độ chuẩn ở phía trước vùng quan sát. Các phương trình (7-4) và (7-5) sẽ được dùng để thu được các giá trị độ sâu cho tất cả các điểm trên mặt mỗi khi một độ sâu khởi tạo vừa

được xác định. Sựđòi hỏi không gian lưu trữ cho vùng đệm độ sâu có thểđược xác định như thế nào từđịnh nghĩa các đối tượng đểđược hiển thị?

6. Phát triển một chương trình cài đặt thuật toán scan-line để hiển thị các mặt nhìn thấy được của một đối tượng được định nghĩa bất kỳ nằm trước vùng quan sát. Dùng các bảng đa giác và bảng cạnh (polygon table, edge table) để lưu trữ sự định nghĩa của đối tượng, và dùng kỹ thuật cố kết để tính các điểm dọc theo và giữa các đường quét.

7. Cài đặt một chương trình để hiển thị các mặt nhìn thấy được của một khối đa diện lồi, dùng các thuật toán của họa sĩ (painter’s algorithm). Tức là, các bề

mặt phải được sắp theo độ sâu và được vẽ lên màn hình từ sau đến trước.

8. Mở rộng chương trình của bài 7 để hiện thị một đối tượng được định nghĩa bất kỳ với các mặt phẳng, dùng các kiểm tra sắp xếp độ sâu (depth-sorting checks)

để có các mặt theo thứ tự sắp hợp lý.

9. Cho các ví dụ về các trường hợp mà tại đó hai phương pháp đã được thảo luận về kiểm tra 3 trong các thuật toán phân chia vùng sẽ thất bại để từđó chỉ ra một cách đúng đắn một mặt bao quanh có thể che khuất tất cả các mặt.

10. Phát triển một thuật toán có thể kiểm tra một mặt được cho tương tác với một vùng chữ nhật để quyết định xem nó là một mặt bao quanh, nằm chồng, bên trong, hay nằm ngoài.

11. Mở rộng các phương pháp trong bài tập 10 thành một thuật toán để sinh ra một biểu diễn quadtree cho các mặt nhìn thấy được của đối tượng bằng cách áp dụng các kiểm tra vùng con (area-subdivision tests) để xác định các giá trị của các phần tử quadtree.

12. Cài đặt một thuật toán để nạp biểu diễn quadtree của bài tập 11 thành đường quét (raster) để hiển thị.

13. Viết một chương trình lên hệ thống của bạn để hiển thị một biểu diễn octree cho một đối tượng để các mặt khuất bị loại bỏ.

14. Phát triển một thuật toán để loại bỏ các đường khuất bằng cách so sánh mỗi

15. Thảo luận làm thế nào việc tháo bỏ các đường khuất có thểđược thực hiện với các phương pháp khử mặt khuất khác nhau.

16. Cài đặt một thủ tục để hiển thị các cạnh bị che khuất của một đối tượng chứa các mặt phẳng thành những đường nét đứt.

Một phần của tài liệu Kỹ thuật lập trình vẽ và tô (Trang 157 - 159)

Tải bản đầy đủ (PDF)

(159 trang)