Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 3 - Nguyễn Hoài Anh
lượt xem 4
download
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 3 Thuật toán vẽ đường, cung cấp cho người học những kiến thức như: Thuật toán vẽ đường thẳng; thuật toán vẽ đường tròn; thuật toán vẽ Elip. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 3 - Nguyễn Hoài Anh
- Giáo viên phụ trách môn học: Nguyễn Hoài Anh Khoa Công nghệ thông tin - HVKTQS
- Thuật toán vẽ đường thẳng Thuật toán vẽ đường tròn Thuật toán vẽ Elip
- Ý tưởng Giả sử tọa độ nguyên các điểm sau khi xấp xỉ đối tượng thực lần lượt là (xi,yi) với i=0,... vẽ các điểm này chúng ta sẽ được một đường xấp xỉ của đối tượng cần vẽ. Giả sử đã biết được (xi,yi) là tọa độ nguyên xác định ở bước thứ i, điểm nguyên tiếp theo (xi+1,yi+1) sẽ được xác định như thế nào?
- Ý tưởng Nhận xét ▪ Để đối tượng hiển thị trên lưới nguyên được liền nét, các điểm mà (xi+1,yi+1) có thể chọn chỉ là một trong tám điểm được đánh số từ 1 đến 8 ▪ Giải thích: điểm đen chính là (xi,yi). ▪ Nói cách khác : (xi+1,yi+1) = (xi+/-1,yi+/-1).
- Thuật toán Giả thiết 00) Với các đoạn thẳng dạng này, nếu (xi,yi) là điểm đã xác định được ở bước thứ i thì điểm cần chọn (xi+1,yi+1) ở bước thứ i+1 sẽ là một trong hai trường hợp 1 hoặc 2 Tại bước i+1 ta xác định được: xi+1 = xi+1 và yi+1 = yi hoặc yi+1. 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 độ.
- Thuật toán DDA (Digital Differential Analyzer) Việc quyết định chọn yi+1 là yi hay yi+1, dựa vào phương trình của đoạn thẳng y=mx+b Tính y rồi làm tròn số và gán giá trị đó cho yi+1. Như vậy yi+1 = Round(m xi+1 + b) = Round(m (xi+1)+b)
- Sơ đồ khối thuật toán DDA
- Cài đặt thuật toán DDA Procedure DDA ( x1, y1, x2, y2, color : integer ); Var dx, dy, step : integer; X_inc, y_inc , x, y : real ; Begin dx:=x2-x1; dy:=y2-y1; if abs(dx)>abs(dy) then steps:=abs(dx) else steps:=abs(dy); x_inc:=dx/steps; y_inc:=dy/steps; x:=x1; y:=y1; putpixel(round(x),round(y), color); for k:=1 to steps do begin x:=x+x_inc; y:=y+y_inc; putpi xel(round(x),round(y), color); end; end;
- Thuật toán Bresenham Đưa ra cách chọn yi+1 là yi hay yi+1 theo một hướng khác sao cho có thể tối ưu hóa về mặt tốc độ so với thuật toán DDA. Vấn đề mấu chốt ở đây là làm thế nào để hạn chế tối đa các phép toán trên số thực trong thuật toán.
- Sơ đồ khối thuật toán Bresenham
- Cài đặt thuật toán Bresenham Procedure Bres_Line (x1,y1,x2,y2: integer); Var dx, dy, x, y, P, const1, const2 : integer; Begin dx : = x2- x1; dy : = y2- y1; P : = 2*dy - dx; Const1 : = 2*dy ; const2: = 2*(dy - dx) ; x:= x1; y:=y1; Putpixel ( x, y, Color); while (x < x -2 ) do begin x : = x +1 ; if (P < 0) then P : = P + const1 else begin y : = y+1 ; P : = P + const2 end ; putpixel (x, y, color) ; end ; End ;
- Trong hệ tọa độ Decac. Phương trình đường tròn có dạng: Với tâm O(0,0): x2 + y2 = R2. Với tâm C(xc,yc): (x-xc)2 + (y-yc)2 = R2 Trong hệ tọa độ cực
- Do tính đối xứng của đường tròn C nên ta chỉ cần vẽ 1/8 cung tròn, sau đó lấy đối xứng qua 2 trục tọa độ và 2 đường phân giác thì ta vẽ được cả đường tròn.
- Ý tưởng
- Cài đặt thuật toán vẽ đường tròn Procedure Circle (xc, yc, R : integer) ; Var x, y : integer ; Procedure DOIXUNG; Begin putpixel (xc + x , yc +y, color) ; putpixel (xc - x , yc + y, color) ; putpixel (xc + x , yc - y, color) ; putpixel (xc - x , yc- y, color) ; putpixel (xc + y , yc + x, color) ; putpixel (xc - y , yc + x, color) ; putpixel (xc + y , yc - x, color) ; putpixel (xc - y , yc - x, color) ; End ; Begin For x : = 0 to round(R*Sqrt(2)/2) do Begin y : = round(Sqrt(R*R - x*x)) ; DOIXUNG; End ; End ;
- Thuật toán MidPoint (xét điểm giữa) Thuật toán MidPoint đưa ra cách chọn yi+1 là yi hay yi+1 bằng cách so sánh điểm thực Q(xi+1,y) với điểm MidPoint là trung điểm của S và P theo nguyên tắc: ▪ Nếu điểm Q nằm dưới điểm MidPoint, ta chọn S. ▪ Ngược lại nếu điểm Q nằm trên điểm MidPoint ta chọn P.
- Thuật toán MidPoint (xét điểm giữa)
- Sơ đồ khối thuật toán MidPoint
- Cài đặt thuật toán MidPoint Procedure DTR(xc, yc, r, mau : integer); var x, y, p : integer ; begin x:=0 ; y:=r; p:=1 - r; while ( y > x) do begin doi_xung; if (p
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật đồ họa (Computer Graphics) - Trần Nguyên Ngọc
290 p | 252 | 38
-
Bài giảng Lesson 1: Kỹ thuật đồ họa và hiện thực ảo - Lê Tấn Hùng
12 p | 171 | 10
-
Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 3: Giải thuật sinh các thực thể cơ sở
32 p | 82 | 8
-
Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 12: Kỹ thuật đồ họa và hiện thực ảo
22 p | 102 | 7
-
Bài giảng môn Đồ họa và hiện thực ảo - Bài 1: Kỹ thuật đồ họa và Hiện thực ảo (Computer graphics and virtual reality)
12 p | 90 | 7
-
Bài giảng Kỹ thuật đồ họa: Phần 1
86 p | 40 | 7
-
Bài giảng Kỹ thuật đồ họa: Phần 2
114 p | 32 | 6
-
Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 1: Kỹ thuật đồ họa và hiện thực ảo
31 p | 98 | 6
-
Bài giảng Kỹ thuật đồ họa và xử lý hình ảnh: Bài 4 – Nguyễn Hài Anh
17 p | 41 | 5
-
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 4 - Nguyễn Hoài Anh
17 p | 27 | 4
-
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 2 - Nguyễn Hoài Anh
19 p | 24 | 4
-
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 1 - Nguyễn Hoài Anh
17 p | 36 | 4
-
Bài giảng Lesson 1: Kỹ thuật đồ họa và hiện thực ảo
11 p | 107 | 4
-
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 6 - Nguyễn Hoài Anh
7 p | 21 | 3
-
Bài giảng Công nghệ đồ họa và hiện thực ảo: Bài 1 - ThS. Trịnh Thành Trung
31 p | 74 | 3
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 8 - Trần Minh Thái
13 p | 35 | 3
-
Bài giảng Kỹ thuật đồ họa và xử lý ảnh: Bài 7 - Nguyễn Hoài Anh
11 p | 29 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn