Bài giảng Đồ họa máy tính: Các thuật giải vẽ đường thẳng và cong cung cấp cho người học những kiến thức như: Thuật giải vẽ đường thẳng; Thuật giải vẽ đường tròn và conic; Giải đáp thắc mắc. Mời các bạn cùng tham khảo! | BÀI GIẢNG ĐỒ HỌA MÁY TÍNH CÁC THUẬT GIẢI VẼ ĐƯỜNG THẲNG VÀ CONG NGÔ QUỐC VIỆT 2009 Nội dung Thuật giải vẽ đường thẳng Thuật giải vẽ đường tròn và conic Giải đáp thắc mắc Bài tập 2 Giới thiệu Nhu cầu chuyển từ vector sang raster rasterization. Vì tính chất tự nhiên của thiết bị hiển thị raster. Các thuật giải là cơ bản cho cả đồ họa 2D và 3D. Chuyển từ liên tục thực tế sang rời rạc lấy mẫu . Most incremental line-drawing algorithms were first developed for pen-plotters. Hầu hết đều dựa trên ý tưởng của Jack Bresenham kỹ sư IBM 3 Thuật giải vẽ đường thẳng Vấn đề Vẽ đoạn thẳng trên thiết bị raster. Giải quyết tiếp cận tốt nhất là xấp xỉ đường lý tưởng. Yêu cầu nhìn liên tục độ sáng và độ dày đồng nhất Xấp xỉ gần đường lý tưởng nhất vẽ nhanh. 4 Thuật giải vẽ đường thẳng-dựa trên độ dốc y mx b slope the y intercept public void lineSimple int x0 int y0 int x1 int y1 Color color int pix int dx x1 - x0 int dy y1 - y0 pix x0 y0 if dx 0 float m float dy float dx float b y0 - m x0 dx x1 gt x0 1 -1 while x0 x1 x0 dx y0 m x0 b pix x0 y0 5 Thuật giải vẽ đường thẳng-dựa trên độ dốc Mục tiêu vẽ đường càng mịn càng tốt một pixel mỗi cột nếu -1 lt slope Thuật giải vẽ đường thẳng-dựa trên độ dốc Problem lineSimple does not give satisfactory results for slopes gt 1 Thuật giải không tốt khi độ dốc gt 1. Giải pháp làm đối xứng. Nghĩa là hoán vị vai trò của trục x và y. Nhờ vậy độ dốc luôn nhỏ hơn 1. 7 Thuật giải vẽ đường thẳng-dựa trên độ dốc gt Cải tiến Cải tiến đoạn code nào làm tốn thời gian. Thường là các vòng lặp trong. Bỏ các lệnh không cần thiết. Ví dụ Thay m x0 b bởi int m y0 b Sử dụng kết quả của bước trước int m y0 b yi 1 yi m y2 hoặc y1 yi 1 yi - m Phát sinh ra thuật giải DDA xo x1 8 Thuật giải vẽ đường thẳng-Cải tiến thêm Nguyên tắc Cộng trừ thì nhanh hơn nhân. Nhân nhanh hơn chia. Dùng bảng tra nếu được. Tính toán số nguyên nhanh hơn số thực. Tránh tính toán thừa bằng cách kiểm tra các trường hợp .