chuong 3a compatibility mode

29 261 0
chuong 3a compatibility mode

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỒ 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 đối tượng Output : Hình ảnh đối tượng bước : Biến đổi đối tượng bước : Xén đối tượng bước : Chuyển hệ tọa độ bước : Vẽ đối tượng Trang Mô hình đối tượng Trang bước : biến đổi Trang bước + : xén + chuyển tọa độ Trang bước : vẽ Kết Trang ĐỒ HỌA 2D MÔ HÌNH Đối tượng biểu diễn ? Các đối tượng sở Điểm Đoạn thẳng Đa giác Đường cong (bezier, spline, bspline …) Các đối tượng phức tạp tạo thành từ đối tượng sở Trang Tổ chức tập tin liệu TXT đối tượng sở đối tượng sở Trang Mô hình đoạn thẳng line x1 y1 x2 y2 r g b TAM_GIAC.TXT //cac doan line 0 line 0 line 2.5 thang 255 0 2.5 255 0 0 255 0 1 2 mm Trang 10 Cài đặt // Lưu tọa độ điểm struct TPoint2D { double x, y; }; // Lưu thơng tin đa giác struct TPolygon2D { int n; TPoint2D point[100]; }; Trang 15 Cài đặt đọc biến đổi xén 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”) { TPoint2D P1, P2; int r, g, b; // Doc doan thang f >> P1.x >> P1.y // Ve doan thang pDC->MoveTo(P1.x, pDC->LineTo(P2.x, } } } chuyển tọa độ vẽ == 0) >> P2.x >> P2.y >> r >> g >> b; P1.y); 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à phép chuyển đổi tọa độ giới thực hai chiều sang tọa độ hình hệ tọa độ giới thực hệ tọa độ hình Trang 19 Công thức cho điểm r l t vùng quan sát W t P vùng hiển thò V P’ b b l giới thực r hình Trang 20 Công thức cho điểm Thế giới thực → hình Wr + Wl Vr − Vl Vr + Vl P = (Px − ) + Wr − Wl Wt + Wb Vt − Vb Vt + Vb ' Py = (Py − ) + Wt − Wb ' x Màn hình → Thế giới thực Vr + Vl Wr − Wl Wr + Wl Px = (P − ) + Vr − Vl V + Vb Wt − Wb Wt + Wb Py = (Py' − t ) + Vt − Vb ' x Trang 21 Công thức cho đoạn thẳng A A’ B giới thực B’ hình Trang 22 Công thức cho đa giác giới thực hình Trang 23 Hệ số méo Khi xác lập cửa sổ window W cửa sổ viewport V phải lưu ý đến hệ số “méo” Vr − Vl W − Wl r= r Vt − Vb Wt − Wb W t r l t V b b l giới thực r 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ử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.b = b; V.t = t; } V 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 Q1 = ConvertWorldToScreen2D(P1); Q2 = ConvertWorldToScreen2D(P2); // Ve doan thang pDC->MoveTo(Q1); pDC->LineTo(Q2); } } } Trang 29

Ngày đăng: 22/12/2016, 12:41

Tài liệu cùng người dùng

Tài liệu liên quan