tailieunhanh - Kỹ thuật về đồ họa - Chương 3

Input: điểm đầu (x1, y1), điểm cuối (x2, y2), màu tô C. Thực chất việc vẽ đường thẳng là việc định màu cho các pixel rời rạc. Do tọa độ pixel chỉ là số nguyên nên khái niệm “thẳng” chỉ là gần đúng. Yêu cầu chất lượng đường vẽ ◦ Hình dạng liên tục ◦ Độ dày và độ sáng đều ◦ Các pixel gần đường “lý tưởng” được hiển thị ◦ Tốc đô ̣ ve ̃ nhanh | KỸ THUẬT ĐỒ HOẠ (Computer Graphics) Chương 3: Các đối tượng đồ hoạ cơ sở (tiếp) Phan Thị Hải Hồng - BM KHMT Bài toán Vẽ đoạn thẳng Input: điểm đầu (x1, y1), điểm cuối (x2, y2), màu tô C. Thực chất việc vẽ đường thẳng là việc định màu cho các pixel rời rạc. Do tọa độ pixel chỉ là số nguyên nên khái niệm “thẳng” chỉ là gần đúng. Yêu cầu chất lượng đường vẽ Hình dạng liên tục Độ dày và độ sáng đều Các pixel gần đường “lý tưởng” được hiển thị Tốc độ vẽ nhanh Phan Thị Hải Hồng – BM KHMT Quy tắc tổng quát khi vẽ đồ họa: Cộng và trừ nhanh hơn nhân Nhân nhanh hơn chia Sử dụng bảng để đánh giá hàm rời rạc nhanh hơn tính toán Tính toán số nguyên nhanh hơn số thực Tránh các tính toán không cần thiết nhờ nhận ra các trường hợp đặc biệt của đường vẽ. Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Xét đoạn thẳng có hệ số góc: Nếu là điểm đã xác định được ở bước thứ i (điểm màu đen) thì điểm cần chọn ở bước thứ (i+1) sẽ là một trong hai trường hợp: Vấn đề còn lại là cách chọn một trong hai điểm trên như thế nào để có thể tối ưu về mặt tốc độ. Phan Thị Hải Hồng – BM KHMT 1. CÁC THUẬT TOÁN VẼ ĐƯỜNG . Thuật toán DDA (Digital Defferencial Analyzer) hay thuật toán tăng dần. . Thuật toán Bresenham. . Thuật toán MidPoint (trung điểm). Phan Thị Hải Hồng – BM KHMT . Thuật toán DDA Việc quyết định chọn là hay , dựa vào phương trình của đoạn thẳng Nếu tính trực tiếp giá trị thực y ở mỗi bước từ phương trình thì phải cần một phép toán nhân và một phép toán cộng số thực. Phan Thị Hải Hồng – BM KHMT Để cải thiện tốc độ, người ta tính giá trị thực của y ở mỗi bước theo cách sau để khử phép tính nhân trên số thực. Nhận xét rằng: ysau = ytrước = ysau = ytrước + m Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT #define ROUND(a) ((int)(a+)) void lineDDA (int xa, int ya, | KỸ THUẬT ĐỒ HOẠ (Computer Graphics) Chương 3: Các đối tượng đồ hoạ cơ sở (tiếp) Phan Thị Hải Hồng - BM KHMT Bài toán Vẽ đoạn thẳng Input: điểm đầu (x1, y1), điểm cuối (x2, y2), màu tô C. Thực chất việc vẽ đường thẳng là việc định màu cho các pixel rời rạc. Do tọa độ pixel chỉ là số nguyên nên khái niệm “thẳng” chỉ là gần đúng. Yêu cầu chất lượng đường vẽ Hình dạng liên tục Độ dày và độ sáng đều Các pixel gần đường “lý tưởng” được hiển thị Tốc độ vẽ nhanh Phan Thị Hải Hồng – BM KHMT Quy tắc tổng quát khi vẽ đồ họa: Cộng và trừ nhanh hơn nhân Nhân nhanh hơn chia Sử dụng bảng để đánh giá hàm rời rạc nhanh hơn tính toán Tính toán số nguyên nhanh hơn số thực Tránh các tính toán không cần thiết nhờ nhận ra các trường hợp đặc biệt của đường vẽ. Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Phan Thị Hải Hồng – BM KHMT Xét đoạn thẳng có hệ số góc: Nếu là điểm đã xác định được ở bước thứ i (điểm màu đen) thì điểm cần chọn ở bước thứ