Bài giảng Đồ họa máy tính: Chương 2 - ThS. Trần Thị Minh Hoàn
Số trang: 39
Loại file: pdf
Dung lượng: 1.06 MB
Lượt xem: 39
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Đồ họa máy tính: Chương 2 Các đối tượng đồ họa cơ sở cung cấp cho người học những kiến thức như: Các thuật toán vẽ đoạn thẳng; Thuật toán Bresenham vẽ line; Thuật toán trung điểm vẽ line; Thuộc tính của đường vẽ; Các thuật toán vẽ đường tròn;...Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Đồ họa máy tính: Chương 2 - ThS. Trần Thị Minh Hoàn Chương II: Các đối tượng đồ họa cơ sở Điểm Đường thẳng Tam giác 1 Màn hình điểm -Chúng ta cần tọa độ màn ảnh thực 2D để chỉ rõ vị trí các điểm ảnh. -Các chi tiết của các hệ thống như vậy là biến đổi theo các API. -Nhưng phổ biến nhất là sử dụng lưới giá trị nguyên cho các tâm điểm ảnh, điểm ảnh trên ở vị trí trung tâm cách biên 0.5. 2 Thuật toán vẽ đoạn thẳng Input: điểm đầu A(x1, y1), điểm cuối B(x2, y2), màu tô color C. Output: Xác định các điểm tạo thành một đoạn thẳng nối hai điểm AB và có màu C. 3 Thuật toán vẽ đoạn thẳng Chuyển đổi đường quét (Rasterization) Biến đổi đường liên tục thành rời rạc (Sampling) Scan conversion = Sampling 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ị Vẽ nhanh 4 Thuật toán vẽ đoạn thẳng Phương trình đoạn thẳng đi qua hai điểm y 2 y1 y x x1 y1 x 2 x1 y2 y1 k x2 x1 m y1 kx1 y kx m 5 Để đơn giản giải thuật chúng ta chỉ xét các đường thẳng có hệ số góc dương và nhỏ hơn 1 để đảm bảo sự thay đổi của x sẽ lớn hơn của y. y1 - 1Các thuật toán vẽ đoạn thẳng Thuật toán DDA (Digital Defferencial Analyzer) hay thuật toán tăng dần (Basic Incremental Algorithm) Thuật toán Bresenham Thuật toán trung điểm 7 Thuật toán DDA DDA- Digital Defferencial Analyzer = Finite defferences Xét các đường thẳng có hệ số góc dương và nhỏ hơn 1 để đảm bảo sự thay đổi của x sẽ lớn hơn của y. Giả sử tại bước thứ i ta đã xác định được xi và yi. Ta cần xác định bước thứ i+1 xi+1=xi +1 Giá trị của y sẽ tương ứng từ phương trình sau: yi+1= yi+ k(xi+1- xi); yi+1= yi+ k Vì k là số thực nên để thu yi+1 nguyên ta buộc phải làm tròn trước khi đưa tọa độ truy xuất lên màn hình. Ví dụ (2,3) -> (12,9) 8 Thuật toán DDA Nhận xét thuật toán DDA Không có phép nhân Có phép chia và làm tròn số -> chậm 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ẽ 9 Thuật toán Bresenham vẽ line yi+1 y = ax + b Giả sử vừa vẽ điểm tại (xi, yi), bây giờ phải xác định điểm sẽ vẽ thuộc một yi trong 8 pixel liền kề: (xi+1, yi), (xi-1, yi), yi-1 (xi, yi-1), (xi, yi+1)... xi-1 xi xi+1 Hình dạng đoạn thẳng phụ thuộc vào các giá trị dx và dy dx=0 -> đ/thẳng song song trục y y1 - 1Thuật toán Bresenham vẽ line 11 Thuật toán Bresenham vẽ line Xét đoạn thẳng có hệ số góc 0k1. Điểm vừa chọn là (x,y) -> điểm tiếp theo sẽ vẽ là (x+1,y) hay (x+1, y+1). Ta có phương trình đường thẳng y y y= x - x1 + y1 x x y Đặt k= ; m= y1 - kx1 x Ta có y=kx+m d2=yi + 1- yi+1; d1=yi+1 – yi Di= x (d2-d1)=x (2yi - 2yi+1 + 1) Di= x (2yi-2kxi - 2k-2m+1) Di+1= x (2yi+1-2kxi+1 - 2k-2m+1) Nếu Di>0, chọn điểm dưới Di+1=Di-2 y Nếu Di Thuật toán Bresenham vẽ line void breline (x1,y1,x2,y2){ int x, y, dx, dy, color; float D; dx=x2-x1; dy=y2-y1; D=dx-2dy; x=x1; y=y1; while (x0 D=D-2dy; Else {D=D +2dx-2dy; y=y+1} x=x+1; } } 13 Thuật toán Bresenham vẽ line Thuật toán trên chỉ tính toán với số nguyên Nhân 2 -> dịch trái Chú ý cài đặt vẽ đoạn thẳng với hệ số góc bất kỳ 14 Thuật toán trung điểm vẽ line Pitteway công bố 1967, Van Aken cải tiến 1984 Giả sử ta đã chọn P để vẽ, xác định pixel tiếp theo tại E hay NE Giao của đường thẳng với Xp+1 tại Q, M là trung điểm của NE và E Ý tưởng: M nằm phía nào của đường thẳng, nếu M phía trên đường thẳng thì chọn E, ngược lại chọn NE. Nhiệm vụ: Xác định M ở đâu. M” yp+1/2 NE Q M’ M yp+1/2 yp+1/2 E P=(xp, yp) xp+1 xp+2 15 Thuật toán trung điểm vẽ line Phương trình đường thẳng: F(x,y)=ax+by+c dy dy F ( x, y ) xB y 0 y xB dx dx F ( x, y ) dy.x dx. y B.dx 0 a=dy, b=-dx, c=B.dx Giá trị hàm tại M: F(M)=F(xp+1, yp+1/2)=d Nếu d>0, M nằm dưới đường thẳng -> chọn NE Nếu d chọn E M” Nếu d=0, ch ...
Nội dung trích xuất từ tài liệu:
Bài giảng Đồ họa máy tính: Chương 2 - ThS. Trần Thị Minh Hoàn Chương II: Các đối tượng đồ họa cơ sở Điểm Đường thẳng Tam giác 1 Màn hình điểm -Chúng ta cần tọa độ màn ảnh thực 2D để chỉ rõ vị trí các điểm ảnh. -Các chi tiết của các hệ thống như vậy là biến đổi theo các API. -Nhưng phổ biến nhất là sử dụng lưới giá trị nguyên cho các tâm điểm ảnh, điểm ảnh trên ở vị trí trung tâm cách biên 0.5. 2 Thuật toán vẽ đoạn thẳng Input: điểm đầu A(x1, y1), điểm cuối B(x2, y2), màu tô color C. Output: Xác định các điểm tạo thành một đoạn thẳng nối hai điểm AB và có màu C. 3 Thuật toán vẽ đoạn thẳng Chuyển đổi đường quét (Rasterization) Biến đổi đường liên tục thành rời rạc (Sampling) Scan conversion = Sampling 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ị Vẽ nhanh 4 Thuật toán vẽ đoạn thẳng Phương trình đoạn thẳng đi qua hai điểm y 2 y1 y x x1 y1 x 2 x1 y2 y1 k x2 x1 m y1 kx1 y kx m 5 Để đơn giản giải thuật chúng ta chỉ xét các đường thẳng có hệ số góc dương và nhỏ hơn 1 để đảm bảo sự thay đổi của x sẽ lớn hơn của y. y1 - 1Các thuật toán vẽ đoạn thẳng Thuật toán DDA (Digital Defferencial Analyzer) hay thuật toán tăng dần (Basic Incremental Algorithm) Thuật toán Bresenham Thuật toán trung điểm 7 Thuật toán DDA DDA- Digital Defferencial Analyzer = Finite defferences Xét các đường thẳng có hệ số góc dương và nhỏ hơn 1 để đảm bảo sự thay đổi của x sẽ lớn hơn của y. Giả sử tại bước thứ i ta đã xác định được xi và yi. Ta cần xác định bước thứ i+1 xi+1=xi +1 Giá trị của y sẽ tương ứng từ phương trình sau: yi+1= yi+ k(xi+1- xi); yi+1= yi+ k Vì k là số thực nên để thu yi+1 nguyên ta buộc phải làm tròn trước khi đưa tọa độ truy xuất lên màn hình. Ví dụ (2,3) -> (12,9) 8 Thuật toán DDA Nhận xét thuật toán DDA Không có phép nhân Có phép chia và làm tròn số -> chậm 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ẽ 9 Thuật toán Bresenham vẽ line yi+1 y = ax + b Giả sử vừa vẽ điểm tại (xi, yi), bây giờ phải xác định điểm sẽ vẽ thuộc một yi trong 8 pixel liền kề: (xi+1, yi), (xi-1, yi), yi-1 (xi, yi-1), (xi, yi+1)... xi-1 xi xi+1 Hình dạng đoạn thẳng phụ thuộc vào các giá trị dx và dy dx=0 -> đ/thẳng song song trục y y1 - 1Thuật toán Bresenham vẽ line 11 Thuật toán Bresenham vẽ line Xét đoạn thẳng có hệ số góc 0k1. Điểm vừa chọn là (x,y) -> điểm tiếp theo sẽ vẽ là (x+1,y) hay (x+1, y+1). Ta có phương trình đường thẳng y y y= x - x1 + y1 x x y Đặt k= ; m= y1 - kx1 x Ta có y=kx+m d2=yi + 1- yi+1; d1=yi+1 – yi Di= x (d2-d1)=x (2yi - 2yi+1 + 1) Di= x (2yi-2kxi - 2k-2m+1) Di+1= x (2yi+1-2kxi+1 - 2k-2m+1) Nếu Di>0, chọn điểm dưới Di+1=Di-2 y Nếu Di Thuật toán Bresenham vẽ line void breline (x1,y1,x2,y2){ int x, y, dx, dy, color; float D; dx=x2-x1; dy=y2-y1; D=dx-2dy; x=x1; y=y1; while (x0 D=D-2dy; Else {D=D +2dx-2dy; y=y+1} x=x+1; } } 13 Thuật toán Bresenham vẽ line Thuật toán trên chỉ tính toán với số nguyên Nhân 2 -> dịch trái Chú ý cài đặt vẽ đoạn thẳng với hệ số góc bất kỳ 14 Thuật toán trung điểm vẽ line Pitteway công bố 1967, Van Aken cải tiến 1984 Giả sử ta đã chọn P để vẽ, xác định pixel tiếp theo tại E hay NE Giao của đường thẳng với Xp+1 tại Q, M là trung điểm của NE và E Ý tưởng: M nằm phía nào của đường thẳng, nếu M phía trên đường thẳng thì chọn E, ngược lại chọn NE. Nhiệm vụ: Xác định M ở đâu. M” yp+1/2 NE Q M’ M yp+1/2 yp+1/2 E P=(xp, yp) xp+1 xp+2 15 Thuật toán trung điểm vẽ line Phương trình đường thẳng: F(x,y)=ax+by+c dy dy F ( x, y ) xB y 0 y xB dx dx F ( x, y ) dy.x dx. y B.dx 0 a=dy, b=-dx, c=B.dx Giá trị hàm tại M: F(M)=F(xp+1, yp+1/2)=d Nếu d>0, M nằm dưới đường thẳng -> chọn NE Nếu d chọn E M” Nếu d=0, ch ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Đồ họa máy tính Đồ họa máy tính Các đối tượng đồ họa cơ sở Thuật toán Bresenham Thuật toán trung điểm Thuật toán trung điểm vẽ elípTài liệu có liên quan:
-
vray for sketchup vietnamese PHẦN 3
10 trang 248 0 0 -
Giáo trình CorelDRAW dành cho người mới học
48 trang 162 0 0 -
Giáo trình CorelDraw 10 - Tham khảo toàn diện: Phần 2
528 trang 143 0 0 -
Bài giảng Đồ họa máy tính: Khử mặt khuất - Ngô Quốc Việt
28 trang 133 0 0 -
Giáo trình môn học Lý thuyết thông tin
136 trang 75 0 0 -
Bài giảng Đồ họa máy tính: Lập trình 3D với OpenGL - Ngô Quốc Việt
55 trang 64 0 0 -
Bài giảng Đồ họa máy tính: Chương 3 - ThS. Trần Thị Minh Hoàn
29 trang 60 0 0 -
Lecture Computer graphics - Lecture 32
35 trang 49 0 0 -
Lecture Computer graphics - Lesson 7: Ellipse and other curves
58 trang 48 0 0 -
Lecture Computer graphics - Lesson 45: Animation
71 trang 48 0 0