Bài giảng Đồ họa Raster - Chương 3, Phần 1: Qui trình hiển thị - Bùi Tiến Liên
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đồ họa Raster - Chương 3, Phần 1: Qui trình hiển thị - Bùi Tiến Liên", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_do_hoa_raster_chuong_3_phan_1_qui_trinh_hien_thi_b.ppt
Nội dung text: Bài giảng Đồ họa Raster - Chương 3, Phần 1: Qui trình hiển thị - Bùi Tiến Liên
- ĐỒ HỌA 2D QUI TRÌNH HIỂN THỊ Giảng viên : Bùi Tiến Lên
- Các bước hiển thị Input : Mơ hình các đối tượng Output : Hình ảnh của các đối tượng bước 1 : Biến đổi các đối tượng bước 2 : Xén các đối tượng bước 3 : Chuyển hệ tọa độ bước 4 : Vẽ các đối tượng Trang 2
- Mơ hình đối tượng Trang 3
- bước 1 : biến đổi Trang 4
- bước 2 + 3 : xén + chuyển tọa độ Trang 5
- bước 4 : vẽ Kết quả Trang 6
- ĐỒ HỌA 2D MƠ HÌNH
- Đối tượng được biểu diễn như thế nào ? Các đối tượng cơ sở ▪Điểm ▪Đoạn thẳng ▪Đa giác ▪Đường cong (bezier, spline, bspline ) Các đối tượng phức tạp được tạo thành từ các đối tượng cơ sở Trang 8
- Tổ chức tập tin dữ liệu .TXT ▪đối tượng cơ sở 1 ▪đối tượng cơ sở 2 ▪ ▪ ▪ ▪ Trang 9
- Mơ hình bằng đoạn thẳng 5 line x1 y1 x2 y2 r g b 4 TAM_GIAC.TXT 3 //cac doan thang 3 line 0 0 4 0 255 0 0 2 line 4 0 0 2.5 255 0 0 line 0 2.5 0 0 255 0 0 1 1 2 1 2 3 4 5 mm Trang 10
- Mơ hình bằng đa giác 5 4 polygon n x1 y1 xn yn r g b TAM_GIAC.TXT 3 3 //cac da giac 2 polygon 3 0 0 4 0 0 2.5 255 0 0 1 1 2 1 2 3 4 5 mm Trang 11
- Ví dụ NHA.TXT //cac doan thang 5 line 0 0 6 0 255 0 0 line 6 0 6 2.5 255 0 0 line 6 2.5 3 3.5 255 0 0 4 line 3 3.5 0 2.5 255 0 0 line 0 2.5 0 0 255 0 0 4 3 line 1 1 2 1 0 255 0 line 2 1 2 2 0 255 0 5 3 line 2 2 1 2 0 255 0 2 9 8 13 12 line 1 2 1 1 0 255 0 line 4 0 5 0 0 0 255 1 6 7 line 5 0 5 2 0 0 255 line 5 2 4 2 0 0 255 line 4 2 4 0 0 0 255 1 10 11 2 1 2 3 4 5 6 7 m Trang 12
- Ví dụ 1.0 3 0.8 A.TXT // cac doan thang 0.6 line 0 0 0.5 1 0 0 0 4 5 line 1 0 0.5 1 0 0 0 0.4 line 0.25 0.5 0.75 0.5 0 0 0 0.2 1 2 0.2 0.4 0.6 0.8 1.0 mm Trang 13
- Ví dụ 1.0 8 7 0.8 11 0.6 9 10 0.4 3 4 0.2 1 2 5 6 0.2 0.4 0.6 0.8 1.0 mm Trang 14
- Cài đặt // Lưu tọa độ của một điểm struct TPoint2D { double x, y; }; // Lưu thơng tin của một đa giác struct TPolygon2D { int n; TPoint2D point[100]; }; Trang 15
- Cài đặt đọc biến đổi xén chuyển tọa độ vẽ void Read_Draw_2D(CDC *pDC, char *filename) { ifstream f(filename); if(f.fail()) return; while(!f.eof()) { char object[32]; f >> object; if(strcmpi(object, “LINE”) == 0) { TPoint2D P1, P2; int r, g, b; // Doc doan thang f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b; // Ve doan thang pDC->MoveTo(P1.x, P1.y); pDC->LineTo(P2.x, P2.y); } } } Trang 16
- ĐỒ HỌA 2D BIẾN ĐỔI TỌA ĐỘ
- Dẫn nhập Trang 18
- Biến đổi tọa độ window – viewport là gì ? Là phép chuyển đổi tọa độ thế giới thực hai chiều sang tọa độ màn hình. hệ tọa độ thế giới thực hệ tọa độ màn hình Trang 19
- Cơng thức cho điểm l r vùng quan sát W vùng hiển thị t V t P P’ b b l r thế giới thực màn hình Trang 20
- Cơng thức cho điểm Thế giới thực → màn hình ' Wr + Wl Vr − Vl Vr + Vl Px = (Px − ) + 2 Wr − Wl 2 ' Wt + Wb Vt − Vb Vt + Vb Py = (Py − ) + 2 Wt − Wb 2 Màn hình → Thế giới thực ' Vr + Vl Wr − Wl Wr + Wl Px = (Px − ) + 2 Vr − Vl 2 ' Vt + Vb Wt − Wb Wt + Wb Py = (Py − ) + 2 Vt − Vb 2 Trang 21
- Cơng thức cho đoạn thẳng A A’ B B’ thế giới thực màn hình Trang 22
- Cơng thức cho đa giác thế giới thực màn hình Trang 23
- Hệ số méo Khi xác lập cửa sổ window W và cửa sổ viewport V phải lưu ý đến hệ số “méo” Vr − Vl W − W l r r = r l Vt − Vb W − W W t b t V t b b l r thế giới thực màn hình Trang 24
- Hệ số méo Trang 25
- Cài đặt // Lưu thơng tin cửa sổ quan sát struct TWindow2D { double l, r, b, t; }; // Lưu thơng tin cửa sổ hiển thị struct TViewport2D { int l, r, b, t; }; // Khai báo các cửa sổ TWindow2D W; TViewport2D V; Trang 26
- Cài đặt void SetWindow2D(double l, double r, double b, double t) { W.l = l; W.r = r; W W.b = b; W.t = t; } void SetViewport2D(int l, int r, int b, int t) { V.l = l; V.r = r; V V.b = b; V.t = t; } Trang 27
- Cài đặt CPoint ConvertWorldToScreen2D(double x, double y) { CPoint Q; Q.x=(x-(W.r+W.l)/2)*(V.r-V.l)/(W.r-W.l)+(V.r+V.l)/2; Q.y=(y-(W.t+W.b)/2)*(V.t-V.b)/(W.t-W.b)+(V.t+V.b)/2; return Q; } CPoint ConvertWorldToScreen2D(TPoint2D P) { CPoint Q; Q.x=(P.x-(W.r+W.l)/2)*(V.r-V.l)/(W.r-W.l)+(V.r+V.l)/2; Q.y=(P.y-(W.t+W.b)/2)*(V.t-V.b)/(W.t-W.b)+(V.t+V.b)/2; return Q; } W V Trang 28
- Cài đặt đọc biến đổi xén chuyển tọa độ vẽ void Read_Convert_Draw_2D(CDC *pDC, char *filename) { ifstream f(filename); if(f.fail()) return; while(!f.eof()) { char object[32]; f >> object; if(strcmpi(object, “LINE”) == 0) { TPoint2D P1, P2; CPoint Q1, Q2; int r, g, b; // Doc doan thang f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b; // Chuyen toa do Q1 = ConvertWorldToScreen2D(P1); Q2 = ConvertWorldToScreen2D(P2); // Ve doan thang pDC->MoveTo(Q1); pDC->LineTo(Q2); } } } Trang 29