BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH
Có thể bạn quan tâm
Đồ họa máy tính nhóm 3
Trường đại học Thành Đô
Chủ Nhật, 8 tháng 11, 2015
BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNHBÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH
Bài 3. Trình bày các kỹ thuật xén tỉa. Viết chương trình mô phỏng các kỹ thuật đó. Nhóm 3 Gồm: +: Nguyễn Bá Hoàng (1300863) +: Nguyễn Quốc Hưng (1300775) +:Nguyễn Văn Dũng (1300773) +:Đặng Văn Thụ (1300481) +:Nguyễn Tiến Đức (1300536)
Chủ đề +: Xén hình +: Xén đoạn thẳng bằng thuật toán CohenSutherland +: Xén đa giác bằng thuật toán SutherlandHodegman
I: Xén hình là gì (Clipping).
- Là thao tác loại bỏ phần hình ảnh của thế giới thực nằm bên ngoài một cửa sổ quan sát.II: Các loại xén hình
- Xén điểm
+: Input Điểm P +: Output P thuộc cửa sổ W(Wl ,Wr ,Wb ,Wt )- Xén đoạn thẳng bằng thuật toán Cohen-Sutherland
+: Input +: Đoạn thẳng P1 P2 +: Output P1 P2 giao W(Wl ,Wr ,Wb ,Wt )- Mặt phẳng được chia làm 5 vùng
- Tóm Tắt Xén đoạn thẳng bằng thuật toán Cohen-Sutherland
- Cài Đặt Bài Toán Xén Đường Thẳng Với Hình Chữ Nhật Bằng CohenSutherland:
#include<graphics.h> #include<math.h> #include<dos.h> #include<stdio.h> #include<conio.h> #include<stdlib.h> void cohen(int x1,int y1,int x2,int y2,int xa, int ya, int xb,int yb) { int a[4],b[4],i,kthuc=0; while(kthuc==0) { a[1]=a[2]=a[3]=a[4]=0; if(xa<x1) a[1]=1; if(xa>x2) a[2]=1; if(ya<y1) a[3]=1; if(ya>y2) a[4]=1;b[1]=b[2]=b[3]=b[4]=0; if(xb<x1) b[1]=1; if(xb>x2) b[2]=1; if(yb<y1) b[3]=1; if(yb>y2) b[4]=1; int ktra=0; for(i=1;i<=4;i++) { if( (a[i]==1) || (b[i]==1) ) ktra=1; }; if(ktra==0) { setcolor(10);line(xa,ya,xb,yb);kthuc=1;} else { int ktra1=1; for(i=1;i<=4;i++) {if( (a[i]==1) && (b[i]==1) ) ktra1=0;} if(ktra1==0) {kthuc=1;} else { if(a[1]==0 && a[2]==0 && a[3]==0 && a[4]==0) { for(i=1;i<=4;i++) { int tg1=a[i];a[i]=b[i];b[i]=tg1; } int tg2=xa;xa=xb;xb=tg2; int tg3=ya;ya=yb;yb=tg3; } if(a[1]==1) { ya=(yb-ya)*(x1-xa)/(xb-xa)+ya; xa=x1; //cout<<xa<<" "<<ya<<endl; } if(a[2]==1) { ya=(yb-ya)*(x2-xa)/(xb-xa)+ya; xa=x2; } if(a[3]==1) { xa=(xb-xa)*(y1-ya)/(yb-ya)+xa; ya=y1; } if(a[4]==1) { xa=(xb-xa)*(y2-ya)/(yb-ya)+xa; ya=y2; } } } } } int main() { int md=0, dr=0; initgraph(&md,&dr,"c:\\tc\\bgi"); setcolor(11); rectangle(200,200,400,400); cohen(200,200,400,400,150,100,300,300); getch(); }- Kết Quả Chạy Bài Toán:
- Xén đa giác bằng thuật toán Sutherland-Hodegman
+: Input Đa giác P +: Output P giao WBước 1
OUT = {}Bước 2
Lặp p : p0 ... pn-1 s là đỉnh kề trước của pTrường hợp 1 : p bên trong, s bên trong
Trường hợp 2 : p bên ngoài, s bên trong
Trường hợp 3 : p bên ngoài, s bên ngoài
Trường hợp 4 : p bên trong, s bên ngoài
- Cài Đặt Xén đa giác bằng Sutherland-Hodegman
#include <stdio.h> #include <graphics.h> #include <conio.h> #include <math.h> #include <process.h> #define TRUE 1 #define FALSE 0 typedef unsigned int outcode; outcode CompOutCode(float x,float y); enum { TOP = 0x1, BOTTOM = 0x2, RIGHT = 0x4, LEFT = 0x8 }; float xmin,xmax,ymin,ymax; void clip(float x0,float y0,float x1,float y1) { outcode outcode0,outcode1,outcodeOut; int accept = FALSE,done = FALSE; outcode0 = CompOutCode(x0,y0); outcode1 = CompOutCode(x1,y1); do { if(!(outcode0|outcode1)) { accept = TRUE; done = TRUE; } else if(outcode0 & outcode1) done = TRUE; else { float x,y; outcodeOut = outcode0?outcode0:outcode1; if(outcodeOut & TOP) { x = x0+(x1-x0)*(ymax-y0)/(y1-y0); y = ymax; } else if(outcodeOut & BOTTOM) { x = x0+(x1-x0)*(ymin-y0)/(y1-y0); y = ymin; } else if(outcodeOut & RIGHT) { y = y0+(y1-y0)*(xmax-x0)/(x1-x0); x = xmax; } else { y = y0+(y1-y0)*(xmin-x0)/(x1-x0); x = xmin; } if(outcodeOut==outcode0) { x0 = x; y0 = y; outcode0 = CompOutCode(x0,y0); } else { x1 = x; y1 = y; outcode1 = CompOutCode(x1,y1); } } }while(done==FALSE); if(accept) line(x0,y0,x1,y1); outtextxy(150,20,"Da Giac Sau Khi Xen"); rectangle(xmin,ymin,xmax,ymax); } outcode CompOutCode(float x,float y) { outcode code = 0; if(y>ymax) code|=TOP; else if(y<ymin) code|=BOTTOM; if(x>xmax) code|=RIGHT; else if(x<xmin) code|=LEFT; return code; } void main( ) { float x1,y1,x2,y2; /* request auto detection */ int gdriver = DETECT, gmode, n,poly[14],i; clrscr( ); printf("Nhap so canh cua da giac"); scanf("%d",&n); printf("\nNhap Toa Do Da Giac\n"); for(i=0;i<2*n;i++) { scanf("%d",&poly[i]); } poly[2*n]=poly[0]; poly[2*n+1]=poly[1]; printf("Nhap Toa Do Vuong Goc Cua Da Giac\n"); scanf("%f%f%f%f",&xmin,&ymin,&xmax,&ymax); /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); outtextxy(150,20,"Da Giac Truoc Khi Xen"); drawpoly(n+1,poly); rectangle(xmin,ymin,xmax,ymax); getch( ); cleardevice( ); for(i=0;i<n;i++) clip(poly[2*i],poly[(2*i)+1],poly[(2*i)+2],poly[(2*i)+3]); getch( ); restorecrtmode( ); }- Nhập Thông Số:
- Kết Quả: Đa giác Trước Khi Chưa Xén.
- Kết Quả: Đa Sau Khi Được Xén.
About Unknown
Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.
Bài đăng Cũ hơn Trang chủFanpage Facebook CNTT
Fanpage CNTT-Nơi giao lưu chia sẻ kiến thức CNTT
- Fanpage CNTT
- Popular
- Recent
- Comments
Popular Posts
-
BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH Bài 3. Trình bày các kỹ thuật xén tỉa. Viết chương trình mô phỏng các kỹ thuật đó. Nhóm 3 ...
-
Thuật toán Bresenham để vẽ đường tròn Bước 1 : - Chọn điểm đầu cần vẽ (x,y) = (0,R). - Tính p đầu tiên: p = 3 - 2R. - Vẽ 8 điểm ứng với (x,y). · ... -
Vẽ hình tròn bằng thuật toán MidPoint #include "iostream" #include "conio.h" #include "graphics.h" #include "math.h" int color = RE...
Popular Posts
-
BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH BÀI TẬP LỚN ĐỒ HỌA MÁY TÍNH Bài 3. Trình bày các kỹ thuật xén tỉa. Viết chương trình mô phỏng các kỹ thuật đó. Nhóm 3 ...
-
Thuật toán Bresenham để vẽ đường tròn Bước 1 : - Chọn điểm đầu cần vẽ (x,y) = (0,R). - Tính p đầu tiên: p = 3 - 2R. - Vẽ 8 điểm ứng với (x,y). · ... -
Vẽ hình tròn bằng thuật toán MidPoint #include "iostream" #include "conio.h" #include "graphics.h" #include "math.h" int color = RE...
Pages
- Trang chủ
Từ khóa » Thuật Toán Xén Hình Cohen-sutherland
-
Bài Giảng Đồ Họa 2D: Các Thuật Toán Xén Hình - Bùi Tiến Lên
-
Thuật Toán Xén Hình - Kỹ Thuật đồ Họa - Cđtin-k10
-
Thuật Toán Cohen-Sutherland - Tài Liệu Text - 123doc
-
Các Thuật Toán Xén điểm, đoạn Thẳng – Clipping
-
Chapter 3: Xén Hìc (Giáo Trình Lý Thuyết đồ Họa) | Tải Miễn Phí
-
Cài đặt Thuật Toán Xén Một đa Giác Vào Một Vùng Hình Chữ Nhật
-
[PDF] Các Giải Thuật Cơ Sở - Soict
-
Đồ Họa Máy Tính: Hiển Thị đối Tượng Hai Chiều - VOER
-
Download Tài Liệu Thuat Toan Cohen Sutherland
-
Bài Giảng Các Thuật Toán Xén điểm, đoạn Thẳng
-
Thuật Toán Xén Hình - Xén đường Thẳng - YouTube
-
Chương 3: Xén Hình - TailieuMienPhi
-
Line Clipping In 2D Xén đường Thẳng Trong 2D - Ppt Tải Xuống