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

ppt 29 trang cucquyet12 3500
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:

  • pptbai_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

  1. ĐỒ HỌA 2D QUI TRÌNH HIỂN THỊ Giảng viên : Bùi Tiến Lên
  2. 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
  3. Mơ hình đối tượng Trang 3
  4. bước 1 : biến đổi Trang 4
  5. bước 2 + 3 : xén + chuyển tọa độ Trang 5
  6. bước 4 : vẽ Kết quả Trang 6
  7. ĐỒ HỌA 2D MƠ HÌNH
  8. Đố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
  9. Tổ chức tập tin dữ liệu .TXT ▪đối tượng cơ sở 1 ▪đối tượng cơ sở 2 ▪ ▪ ▪ ▪ Trang 9
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. ĐỒ HỌA 2D BIẾN ĐỔI TỌA ĐỘ
  18. Dẫn nhập Trang 18
  19. 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
  20. 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
  21. 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
  22. Cơng thức cho đoạn thẳng A A’ B B’ thế giới thực màn hình Trang 22
  23. Cơng thức cho đa giác thế giới thực màn hình Trang 23
  24. 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
  25. Hệ số méo Trang 25
  26. 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
  27. 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
  28. 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
  29. 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