Đề cương ôn tập môn Kĩ thuật đồ họa 26-11-2015 Xuống cuối trang để download file đính kèm. I – Câu hỏi ôn tập 1. Khái niệm và ứng dụng của kĩ thuật đồ họa 2. Trình bày một số chuẩn phần mềm. Vì sao phải chuẩn hóa phần mềm? 3. Trình bày về không gian mẫu 4. Trình bày về HSL 5. Trình bày về HSV 6. Trình bày í tưởng và phương pháp của thuật toán scanline 7. Trình bày í tưởng và phương pháp của thuật tô màu theo đường biên 8. Cmr kết hợp của hai phép tịnh tiến là một phép tịnh tiến 9. Cmr kết hợp của hai phép tỉ leejbawfng một phép tỉ lệ 10. Cmr kết hợp của hai phép quay quanh gốc tọa độ bằng một phép quay 11. Cmr cặp hai phép tỉ lệ có tính giao hoán 12. Cmr kết hợp phép đồng dạng và phép quay có tính giao hoán 13. Trình bày í tưởng và phương pháp của thuật Cohen 14. Vẽ đường tròn bằng giải thuật : -----đơn giản 15. ........bresenham 16. ........mid-point 17. Vẽ đường thẳng bằng giải thuật :----DDA 18. ........bresenham 19. ........mid-point 20. Vẽ ellipse bằng một giải thuật bất kì. II – Bài làm 1. Khái niệm và ứng dụng của kĩ thuật đồ họa Click để xem là những hình ảnh phát sinh ra khi sử dụng máy tính u/d: - giáo dục: phục vụ mô tả hiện tượng mô phỏng hình ảnh thí nghiệm - giải trí - xây dựng giao diện người dùng (user interface) tạo các biểu đồ trong thương mại, khoa học, kỹ thuật tự động hóa văn phòng và chế bản điện tử thiết kế với sự trợ giúp của máy tính(CAD_CAM) lĩnh vực bản đồ(carto graphy) điều khiển các quá trình sản xuất(process control) 2. Trình bày một số chuẩn phần mềm. Vì sao phải chuẩn hóa phần mềm? Click để xem Do mỗi máy có một đầu ra khác nhau phải chuẩn hóa để phần mêm sử dụng trên các thiết bị khác không bị phát sinh lỗi Gồm 7 chuẩn: - GKS(graphics kernel system ) dùng để phát triển các phần mềm đồ họa - CGM(computer graphics metafile) xác định các chuẩn cho việc lưu trữ và chuyển đổi hình ảnh - CGI(computer graphics interface system ) hệ chuẩn cho các phương pháp giao tiếp với các thiết bị ngoại vi - VRML(virtual reality modeling language) ngôn ngữ thực tại ảo, một hướng phát triển công nghệ hiển thị - PHIGS(programmers hierarchical interactives graphics standard ): xác định các phương pháp chuẩn cho các mô hình trung gian thực tập và lập trình hướng đối tượng - OPENGL: là thư viện đồ họa: tra cứu đồ họa - DIRECTX: thư viện đồ họa: tra cứu đồ họa 3. Trình bày về không gian mẫu Click để xem – RGB miêu tả màu sắc bằng ba thành phần cơ bản R_Red, G_Green, B_Blue - Ưu: >chuẩn công nghiệp cho các thao tác đồ họa máy tính >có thể chuyển đổi qua lại giữa các không gian màu này với không gian màu khác nhau >thao tác tính toán đơn giản - Nhược.>giá trị RGB của một màu là khác nhau với các màn hình khác nhau >không phù hợp với sự cảm nhận màu sắc của con người 4. Trình bày về HSL Click để xem HSV(hue, saturation,value) miêu tả màu sắc bằng ba thành phần: hue: màu sắc 00-3600 đo bởi góc quay xung quanh trục đứng với màu đỏ là 00 , màu lục là 1200 , màu lam là 2400. Các màu bổ sung cho hình chóp ở 1800 đối diện với các màu khác Ưu :- intuitive(trực giác) choose hue, vary lightness, vary saturation Nhược:-chuyển đổi với RGB có sai số(cube stood on end) thay đổi trên các loại màn hình khác nhau - Không có cảm nhận đều 5. Trình bày về HSV Click để xem HLS(hue, lightness, saturation model) không gian mà trực quan Ưu:rất trực giác có thể chọn màu, thay đổi độ sáng và thay đổi độ bão hòa Nhược: khi chuyển đổi với không gian màu RGB sẽ có sai số (cube stood on end) thay đổi trên các loại màn hình khác nhau, rõ ràng không cảm nhận đều các màu. 6. Trình bày í tưởng và phương pháp của thuật toán scanline Click để xem – ý tưởng: Với mỗi dòng quét ta xác định giao của đa giác và dòng quét rồi tô màu các pixel của đoạn giao đó - Phương pháp : Hình vẽ:.. B1: tìm ymin, ymax lần lượt là giá trị nhỏ nhất lớn nhất của tập các tung độ của các điểm đa giác đã cho B2: ứng với mọi dòng quét i=k với k= ymin,ymax lặp lại quá trình sau: . tìm tất cả các hoành độ giao điểm của dòng quét i=k với các cạnh của đa giác . sắp xếp các hoành độ giao điểm tăng dân từ x0,...,xn . tô màu các đoạn thẳng trên đường thẳng i=k lần lượt được giới hạn bởi các cặp điểm (x0,x1),(x1,x2),...,(xn-1,xn) 7. Trình bày í tưởng và phương pháp của thuật tô màu theo đường biên Click để xem - ý tưởng : tô màu theo 4 điểm hoặc 8 điểm lân cận - Phương pháp: B1: bắt đầu từ một điểm nằm trong vùng cần tô B2: ktra vùng lân cận đã được tô hay chưa B3: nếu điểm đó không phải điểm đã tô , không phải điểm biên thì ta sẽ tô màu điểm đó B4: quá trình này còn được lặp lại cho đến khi không còn điểm cần tô 8. Cmr kết hợp của hai phép tịnh tiến là một phép tịnh tiến Click để xem thực hiện 2 phép biến đổi tịnh tiến như sau: - phép tịnh tiến thứ 1: phép tịnh tiến điểm P(x,y) thành P1(x1,y1) Ma trận của phép tịnh tiến biến đổi là Mt1= Phép tịnh tiến thứ 2: phép tịnh tiến điểm P1(x1,y1)thành P2(x2,y2) Ma trận của phép tịnh tiến biến đổi là : P2 là ảnh của phép biến đổi tịnh tiến của phép biến đổi kết hợp 2 phép tịnh tiến: P2=Mt1.Mt2= = ð Kết hợp của hai phép tịnh tiến là một phép tịnh tiến(dpcm) 9. Cmr kết hợp của hai phép tỉ leejbawfng một phép tỉ lệ Click để xem thực hiện 2 phép biến đổi tỉ lệ như sau: - phép tỉ lệ thứ 1: phép tỉ lệ điểm P(x,y) thành P1(x1,y1) Ma trận của phép tỉ lệ biến đổi là Ms1= Phép tỉ lệ thứ 2: phép tỉ lệ điểm P1(x1,y1)thành P2(x2,y2) Ma trận của phép tỉ lệ biến đổi là : P2 là ảnh của phép biến đổi tỉ lệ của phép biến đổi kết hợp 2 phép tỉ lệ: P2=Ms1.Ms2= . = ð Kết hợp của hai phép tỉ lệ là một phép tỉ lệ(dpcm) 10. Cmr kết hợp của hai phép quay quanh gốc tọa độ bằng một phép quay Click để xem thực hiện 2 phép biến đổi quay như sau: - phép quay thứ 1: phép quay điểm P(x,y) thành P1(x1,y1) Ma trận của phép quay biến đổi là M1= Phép quay thứ 2: phép quay điểm P1(x1,y1)thành P2(x2,y2) Ma trận của phép quay biến đổi là : P2 là ảnh của phép biến đổi quay của phép biến đổi kết hợp 2 phép quay: P2=M1.M2= = ð Kết hợp của hai phép quay là một phép quay(dpcm) 11. Cmr cặp hai phép tỉ lệ có tính giao hoán Click để xem thực hiện 2 phép biến đổi tỉ lệ như sau: - phép tỉ lệ thứ 1: phép tỉ lệ điểm P(x,y) thành P1(x1,y1) Ma trận của phép tỉ lệ biến đổi là Ms1= Phép tỉ lệ thứ 2: phép tỉ lệ điểm P1(x1,y1)thành P2(x2,y2) Ma trận của phép tỉ lệ biến đổi là : P2 là ảnh của phép biến đổi tỉ lệ của phép biến đổi kết hợp 2 phép tỉ lệ: P2=Ms1.Ms2= . = =A Ms2.Ms1= = =A ð Kết hợp của hai phép biến đổi tỉ lệ có tính giao hoán 12. Cmr kết hợp phép đồng dạng và phép quay có tính giao hoán Click để xem thực hiện 2 phép biến đổi như sau: - phép đồng dạng biến điểm P(x,y) thành P1(x1,y1) Ma trận của phép biến đổi là: - Phép quay thứ 2: phép quay điểm P1(x1,y1)thành P2(x2,y2) Ma trận của phép quay biến đổi là : P2 là ảnh của phép biến đổi đồng dạng và phép quay: P2=Ms1.M2= =???? (1) M2.Ms1= =?????? (2) Từ (1)và (2)=> kết hợp phép đồng dạng và phép quay có tính giao hoán(dpcm) 13. Trình bày í tưởng và phương pháp của thuật Cohen Click để xem +, ý tưởng: dựa trên việc đánh mã vùng +, phương pháp: - Chia mp cần xén thành 9 vùng trong đó 1 vùng làm cửa sổ và 8 vùng xung quanh cửa sổ 0101 0100 0110 0001 0000 WINDOW 0010 1001 1000 1010 - Thiết lập mã cho từng vùng. Mã vùng là một số gồm 4 bit nhị phân nó miêu tả vị trí của vùng so với cửa sổ - 4 - 3 2 1 - Dưới trên Phải Trái Quy ước giá trị “1” tương ứng với bit nào nằm trong mã vùng sẽ chỉ ra rằng điểm đó ở vị trí tương ứng , ngược lại bit đó sẽ được đặt bằng “0” *mã vùng của cửa sổ xén : 0000 - xác định mã của điểm đầu và điểm cuối Giả sử điểm cần xét P(x,y). So sánh P(x,y) với các điểm giới hạn bởi cửa sổ (xmax,ymax), (xmin,ymin) để suy ra vị trí của P(x,y) ở đâu thì có mã tương ứng ở đó. - Xét vị trí tương đối của cửa sổ so với đường thẳng dựa trên mã mà ta vừa xác định o Nếu đường thẳng nằm hoàn toàn bên trong cửa sổ, kết thúc quá trình xén đường thẳng này được hiển thị o Nếu đường thẳng nằm hoàn toàn bên ngoài cửa sổ, kết thúc quá trình xén đường thẳng này bị loại bỏ o Nếu đường thẳng có khả năng cắt cửa sổ tại ít nhất một điểm. Tìm giao điểm của đường thẳng với các biên của cửa sổ. Kết thúc quá trình xén phần được hiển thị là phần nằm trong cửa sổ, phần bị loại là phần nằm ngoài cửa sổ 14. Vẽ đường tròn bằng giải thuật : -----đơn giản Click để xem //ve duong tron bang thuat toan don gian// CODE: Select All #include<graphics.h>#include<conio.h>#include<math.h>Void hamve8diem(int x, int y, int color){Putpixel(x,y,color);Putpixel(-x,y,color);Putpixel(-y,x,color);Putpixel(-y,-x,color);Putpixel(-x,-y,color);Putpixel(x,-y,color);Putpixel(y,-x,color);Putpixel(y,x,color);}Void ham_don_gian(int R){x=0;y=R;putpixel(x,y,color);for(x=0;x<=sqrt(2)*R/2;x++) { y =Round(sqrt(R*R-x*x)); hamve8diem(x,y,color);}}Void main(){Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);Ham_don_gian(getmaxx()/2,getmaxy()/2,150,4);Getch();Closegraph();} 15 ve duong tron bang giai thuat bresebham Click để xem CODE: Select All #include<graphics.h>#include<conio.h>Void bresenham_circle(int xc, int yc, int R, int color){Int x,y,d;x=0;y=R;d=3-2*R;while(x<=y) { 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-x,yc-y,color);Putpixel(xc+x,yc-y,color);Putpixel(xc+y,yc-x,color);Putpixel(xc+y,xc+x,color);If(d<0) d+=4*x+6;else{ d+=4*(x-y)+10; y--; }x++;}}Void main{Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);bresenham_circle(getmaxx()/2,getmaxy()/2,150,4);Getch();Closegraph();} 16. ve duong tron bang giai thuat mi_point Click để xem CODE: Select All #include<graphics.h>#include<conio.h>Void mid_circle(int xc, int yc, int R, int color){Int x,y,d;x=0;y=R;d=1-R;while(x<=y) { 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-x,yc-y,color);Putpixel(xc+x,yc-y,color);Putpixel(xc+y,yc-x,color);Putpixel(xc+y,xc+x,color);If(d<0) d+=2*x+3;else{ d+=2*(x-y)+5; y--; }x++;}}Void main{Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);mid_circle(getmaxx()/2,getmaxy()/2,150,4);Getch();Closegraph();} 17.ve duong thang bang giai thuat DDA Click để xem CODE: Select All #include<graphics.h>#include<conio.h>#include<math.h>#define Round(y)(int)(y+0.5)Int color= RED;Void linedda(int x1, int y1, int x2, int y2){Int i;Int x=x1;Float y=y1;Float m=(float)(y2-y1)/(x2-x1);Putpixel(x,y,color);Putpixel(-x,y,color);Putpixel(-y,x,color);Putpixel(-y,-x,color);Putpixel(-x,-y,color);Putpixel(x,-y,color);Putpixel(y,-x,color);Putpixel(y,x,color);For(i=x1;i<x2;i++){x++;y=Round(y+m);putpixel(x,y,color);}}Void main{Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);Setbkcolor(WHITE);linedda(50,100,300,200);Getch();Closegraph();} 18. ve duong thang bang giai thuat bresenham Click để xem CODE: Select All #include<graphics.h>#include<conio.h>Void bre_line(int x1, int y1, int x2, int y2, int c){Int x, y, dx, dy, p, const 1, const 2;y=y1;dx=x2-x1;dy=y2-y1;p=2*dy-dx;const 1=2*dy;const 2=2*(dy-dx);for(x=x1;x<=x2;x++){Putpixel(x,y,c);If(p<0)P+=const 1;//p=p+2dyElse { p+=const 2;//p=p+2dy-2dx y++;}}}Void main{Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);bre_line(getmaxx()/2,getmaxy()/2,4);Getch();Closegraph();} 19. ve duong thang bang giai thuat mid_point Click để xem CODE: Select All #include<graphics.h>#include<conio.h>Void mid_line(int x1, int y1, int x2, int y2, int c){Int x, y, dx, dy, d;y=y1;dx=x2-x1;dy=y2-y1;d=dy-dx/2;for(x=x1;x<=x2;x++){Putpixel(x,y,c);If(d<=0)d=d+dy;Else { y++; d=d+dy-dx;}}}Void main{Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);mid_line(getmaxx()/2,getmaxy()/2,4);Getch();Closegraph();} 20.ve elip bang giai thuat bat ki Click để xem CODE: Select All #include<graphics.h>#include<conio.h>#define ROUND(a)((long)(a+0.5))Void plot(int xc, int yc, int x, int y, int color){Putpixel(xc+x,yc+y,color);Putpixel(xc-x,yc+y,color);Putpixel(xc+x,yc-y,color);Putpixel(xc-x,yc-y,color);}Void mid_ellipse(int xc, int yc, int a,int b, int color){Long x,y, fx,fy, a2,b2,p;x=0;y=b;a2=a*a;b2=b*b;fx=0;fy=2*a2*y;plot(xc,yc,x,y,color);p=ROUND(b2-(a2*b)+(0.25*));while(fx<fy){x++;fx+=2*b2;if(p<0) p+=b2*(2*x+3);else{ y--; p+=b2*(2*x+3)+a2*(-2*y+2); fy-=2*a2;}(b2*(x+0.5)+a2*(y-1)*(y-1)-a2*b2);while(y>0)y--;fy-=2*a2;if(p>0) p+=a2*(3-2*y);else{ x++; fx+=2*b2; p+=b2*(2*x+2)+a2*(-2*y+3);}Plot(xc,yc,x,y,color);}}Void main(){Int gr_drive=DETECT , gr_mode;Initgraph (&gr_drive,& gr_mode,”c:\\bc\\bgi”);mid_ellipse(getmaxx()/2,getmaxy()/2,150,80,4);Getch();Closegraph();} Nguồn: cnttqn.com