Danh mục

Bài giảng Các đối tượng đồ họa cơ sở - Phan Phúc Doãn

Số trang: 16      Loại file: ppt      Dung lượng: 345.50 KB      Lượt xem: 1      Lượt tải: 0    
thaipvcb

Hỗ trợ phí lưu trữ khi tải xuống: 16,000 VND Tải xuống file đầy đủ (16 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Các đối tượng đồ họa cơ sở do Phan Phúc Doãn thực hiện nhằm cung cấp cho các bạn những kiến thức về hệ tọa độ thực và hệ tọa độ thiết bị; điểm; đường thẳng, đường gấp khúc; vùng tô; kí tự, chuỗi kí tự; đường thẳng trên màn hình; đặc điểm của đường thẳng nguyên; thuật toán Slope - Intercept và một số nội dung khác.
Nội dung trích xuất từ tài liệu:
Bài giảng Các đối tượng đồ họa cơ sở - Phan Phúc DoãnCácđốitượngđồhọacơsở PhanPhúcDoãn 1 Hệtọađộthựcvàhệtọađộthiếtbị• Hệtọađộthực: – Tọađộlàsốthực,liêntục – Lớn,nhỏtùyý• Hệtọađộthiếtbị: – Tọađộnguyên,rờirạc – Tọađộbịgiớihạntrongmộtkhoảngnàođó – Xthuộc[0,639] – Hệtọađộthiếtbịquiướcbàntaytrái 2 Điểm• Làthànhphầncơsở• Tọađộ,màusắc 3 Đườngthẳng,đườnggấpkhúc• Phươngtrìnhđoạnchắn: ( x − x1 )( y2 − y1 ) = ( y − y1 )( x2 − x1 )• Phươngtrìnhtổngquát:Ax+By+C=0 x = (1 − t ) x1 + tx2• Phươngtrìnhthamsố: y = (1 − t ) y1 + ty2• Đườnggấpkhúclàtậpcácđoạnthẳngnốinhauxácđịnhbởi cácđỉnh 4 Đườngthẳng,đườnggấpkhúc(tt)• Màusắc• Độrộngnétvẽ• Kiểunétvẽ:liền,đứt,.. 5 Vùngtô• Đườngbiênvàvùngbêntrong• Đườngbiên:giốngđoạnthẳng• Vùngbêntrong:màutôvàmẫutô 6 Kítự,chuỗikítự• Màusắc• Fontchữ• Kíchthước• Khoảngcáchgiữacáckítự• Sựcanhchỉnh• Cáchhiểnthịtuầntựcáckítự• Hướngcủakítự 7Vẽđườngthẳng 8Đườngthẳngtrênmànhình Đườngthẳngđượchìnhthành từcácđiểmrờirạc Cácđiểmđượcxácđịnhtừ phươngtrìnhcủađường thẳng IdealLine Rasterizedline 9Đặcđiểmcủađườngthẳngnguyên Xấpxỉđườngthẳngthực Khôngliêntục Dạngrăngcưa(hìnhbậc thang) Nhanh–Thaotáccơbảnđể tạothànhcácđốitượng khác 10Phươngtrìnhđườngthẳngthực (x1,y1) Dy Dx (x2,y2) y m x b Dx x2 x1 Dy y2 y1 m Dy/Dx b y1 m x1 11 ThuậttoánSlopeInterceptSlopeInterceptLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; int x = x1, y = y1; putpixel(x, y, color); if (Dx != 0) { float m = (float)Dy / (float)Dx; float b = y1 - m*x1; int stepX = (x2 > x1) ? 1 : -1; while (x != x2) { x += stepX; y = round(m*x + b); putpixel(x, y, color); } }} 12 Lưuý Khiđộlớncủahệsốgócđườngthẳnglớnhơn 1thìcácđiểmtrênđườngthẳngrờirạc. (x2,y2) Khắcphục:Tínhtọađộxtheoy,nghĩalàx= g(y) Dy Dx(x1,y1) 13ImprovedSlopeInterceptLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; int x = x1, y = y1; Thuậttoáncảitiến putpixel(x, y, color); if (abs(Dx) > abs(Dy)) { float m = (float)Dy / (float)Dx; float b = y1 - m*x1; int stepX = (Dx < 0) ? -1 : 1; while (x != x2) { x += stepX; putpixel(x, round(m*x + b), color); } } else if (Dy != 0) { float m = (float)Dx / (float)Dy; float b = x - m*y; int stepY = (Dy < 0) ? -1 : 1; while (y != y2) { y += stepY; putpixel(round(m*y + b), y, color); } }} 14 CảitiếnVònglặpbêntrong: while (x != x2) { x += stepX; putpixel(x, round(m*x + b), color); }GiátrịcủayđượctínhtrựctiếptừphươngtrìnhChúngtacóthểtínhgiátrịcủaybằngcáchkhác: float t = m * x + b + 0.5; while (x != x2) { x += stepX; t += m; putpixel(x, (int)t, color); } 15 DigitalDifferentialAnalyzerDDALine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; float t = 0.5; int x = x1, y = y1; putpixel(x, y, color); if (abs(Dx) > abs(Dy)) { float m = (float)Dy / (float)Dx; float b = y - m*x; int stepX = (Dx < 0) ? -1 : 1; t += b + m*x; m *= (float)stepX; while (x != x2) { x += stepX; t += m; putpixel(x, (int)t, color); } } else if (Dy != 0) { // swap x & y to do other slopes }} 16 ...

Tài liệu được xem nhiều: