bài tập đồ họa máy tính

10 970 1
bài tập đồ họa máy tính

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

Thông tin tài liệu

#include<iostream.h>A #include<conio.h> #include<graphics.h> #include<math.h> void khoitao() { int gd=DETECT,gm; initgraph(&gd,&gm,"C:\\TC\\BGI"); } void swap(int &x,int &y) { int tam = x; x = y; y = tam; } void line1(int x1,int y1,int x2,int y2,int color) { int x,y,p,step,c1,c2,dx,dy; if(x1>x2){ swap(x1,x2); swap(y1,y2); } x = x1; y = y1; dx = x2 -x1; dy = abs(y1-y2); step = (y1>y2)?-1:1; c1 = 2 * dy; c2 = 2*(dy - dx); p = 2*dy -dx; for(x=x1;x<=x2;x++) { putpixel(x,y,color); if(p<0) p+=c1; else{ p+=c2; y+=step; } } } void line2(int x1,int y1,int x2,int y2,int color) { int x,y,p,step,c1,c2,dx,dy; if(y1>y2){ swap(x1,x2); swap(y1,y2); } x = x1; y = y1; dx = y2 -y1; dy = abs(x1-x2); step = (x1>x2)?-1:1; c1 = 2 * dy; c2 = 2*(dy - dx); p = 2*dy -dx; for(y=y1;y<=y2;y++) { putpixel(x,y,color); if(p<0) p+=c1; else{ p+=c2; x+=step; } } } void line(int x1,int y1,int x2,int y2,int color) { x1 = getmaxx()/2+x1; y1 = getmaxy()/2-y1; x2 = getmaxx()/2+x2; y2 = getmaxy()/2-y2; int dx = abs(x2-x1); int dy = abs(y1 -y2); if(dx>dy) line1(x1,y1,x2,y2,color); else line2(x1,y1,x2,y2,color); } void hetoado() { int color = 15; line(0,getmaxy()/2-10,0,10-getmaxy()/2,color); line(getmaxx()/2+10,0,10-getmaxx()/2,0,color); } void tamgiac(int x1,int y1,int x2,int y2,int x3,int y3,int color) { line(x1,y1,x2,y2,color); line(x1,y1,x3,y3,color); line(x2,y2,x3,y3,color); } void quaydiem(int x,int y,int xq,int yq,float goc,int &x1,int &y1) { float al = goc*RADS; x1 = (int)(x*cos(al)-y*sin(al) + (1-cos(al))*xq+sin(al)*yq); y1 = (int)(x*sin(al)+y*cos(al) - sin(al)*xq+(1-cos(al))*yq); outtextxy(xq+getmaxx()/2,getmaxy()/2-yq,"O tam quay"); } void quayTG(int x1,int y1,int x2,int y2,int x3,int y3,int xq,int yq,float goc,int color) { int x11,y11,x22,y22,x33,y33; quaydiem(x1,y1,xq,yq,goc,x11,y11); quaydiem(x2,y2,xq,yq,goc,x22,y22); quaydiem(x3,y3,xq,yq,goc,x33,y33); tamgiac(x11,y11,x22,y22,x33,y33,color); } void hcn(int x1,int y1,int x2,int y2,int color) { line(x1,y1,x1,y2,color); line(x1,y1,x2,y1,color); line(x1,y2,x2,y2,color); line(x2,y2,x2,y1,color); } void quayHCN(int x1,int y1,int x2,int y2,int xq,int yq,int goc,int color) { int x11,y11,x22,y22,x33,y33,x44,y44; quaydiem(x1,y1,xq,yq,goc,x11,y11); //a quaydiem(x2,y1,xq,yq,goc,x22,y22); //b quaydiem(x2,y2,xq,yq,goc,x33,y33);//c quaydiem(x1,y2,xq,yq,goc,x44,y44); //d line(x11,y11,x22,y22,color); line(x22,y22,x33,y33,color); line(x33,y33,x44,y44,color); line(x44,y44,x11,y11,color); } void biendang(int x,int y,float a,float b,int &x1,int &y1) { x1 = b*y +x; y1 = a*x +y; } void bdhcn(int x1,int y1,int x2,int y2,float a,float b,int color) { int x11,y11,x22,y22,x33,y33,x44,y44; biendang(x1,y1,a,b,x11,y11); //a biendang(x2,y1,a,b,x22,y22); //b biendang(x2,y2,a,b,x33,y33);//c biendang(x1,y2,a,b,x44,y44); //d line(x11,y11,x22,y22,color); line(x22,y22,x33,y33,color); line(x33,y33,x44,y44,color); line(x44,y44,x11,y11,color); } void bdtg(int x1,int y1,int x2,int y2,int x3,int y3,float a,float b,int color) { int x11,y11,x22,y22,x33,y33; biendang(x1,y1,a,b,x11,y11); //a biendang(x2,y2,a,b,x22,y22); //b biendang(x3,y3,a,b,x33,y33);//c tamgiac(x11,y11,x22,y22,x33,y33,color); } void put8pixel(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); putpixel(xc-y,yc-x,color); putpixel(xc-y,yc+x,color); putpixel(xc+y,yc-x,color); putpixel(xc+y,yc+x,color); } void tron(int xc,int yc,int r,int color) { int x,y,p; x = 0; y = r; p = 3 + 2*r; xc = getmaxx()/2 +xc; yc = getmaxy()/2 -yc; while(x<=y){ put8pixel(xc,yc,x,y,color); if(p<0) p+=4*x+6; else{ p+=4*(x-y)+10; y ; } x++; } } void to(int x,int y,int mauto,int maubien) { int mauht; mauht= getpixel(x,y); if(mauht!=mauto && mauht!=maubien) { putpixel(x,y,mauto); to(x-1,y,mauto,maubien); to(x,y+1,mauto,maubien); to(x+1,y,mauto,maubien); to(x,y-1,mauto,maubien); } } void tomau(int x,int y,int mauto,int maubien) { x=getmaxx()/2+x; y=getmaxy()/2-y; to(x,y,mauto,maubien); } void sin() { int x1,y1,x2,y2,k; float step,x,y; step = 0.0001; k =20; x1 = getmaxx()/2; y1 = getmaxy()/2; for(x=-10;x<=10;x+=step) { y = sin(x); x2 = x1+ceil(x*k); y2 = y1+ceil(y*k); putpixel(x2,y2,4); } } void put4pixel(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 elip(int xc,int yc,int a,int b,int color) { xc = getmaxx()/2+xc; yc = getmaxy()/2-yc; double z1,z2,p; int x,y; x =0; y=b; z1 = (double)(b*b)/(a*a); z2 = (double)1/z1; p = 2*z1 - 2*b+1; while(z1*(double)x/y<=1) { put4pixel(xc,yc,x,y,color); if(p<0) p+=2*z1*(2*x+3); else{ p+=2*z1*(2*x+3)+4*(1-y); y ; } x++; } x = a; y = 0; p = 2*z2 - 2*a+1; while(z2*(double)y/x<=1) { put4pixel(xc,yc,x,y,color); if(p<0) p+=2*z2*(2*y+3); else{ p+=2*z2*(2*y+3)+4*(1-x); x ; } y++; } } void main() { clrscr(); int x1=50,y1=20,x2=50,y2=100,x3=100,y3=20,xq = 50, yq = -140; float goc = 100; khoitao(); hetoado(); tamgiac(x1,y1,x2,y2,x3,y3,5); tomau((x1+x2+x3)/3,(y1+y2+y3)/3,6,5); quayTG(x1,y1,x2,y2,x3,y3,xq,yq,goc,2); bdtg(x1,y1,x2,y2,x3,y3,1,1.6,2); int a1 = 100,b1=-40,a2 =200,b2 = -80; hcn(a1,b1,a2,b2,2); quayHCN(a1,b1,a2,b2,xq,yq,120,4); bdhcn(a1,b1,a2,b2,-0.5,-0.8,2); tron(-100,130,30,4); tomau(-100,130,2,4); elip(-200,-100,50,20,5); tomau(-200,-100,9,5); sin(); getch(); } . color) { xc = getmaxx()/2+xc; yc = getmaxy()/2-yc; double z1,z2,p; int x,y; x =0; y=b; z1 = (double)(b*b)/(a*a); z2 = (double)1/z1; p = 2*z1 - 2*b+1; while(z1*(double)x/y<=1) { put4pixel(xc,yc,x,y,color); if(p<0). abs(y1 -y2); if(dx>dy) line1(x1,y1,x2,y2,color); else line2(x1,y1,x2,y2,color); } void hetoado() { int color = 15; line(0,getmaxy()/2-10,0,10-getmaxy()/2,color); line(getmaxx()/2+10,0,10-getmaxx()/2,0,color); } void. p+=2*z1*(2*x+3); else{ p+=2*z1*(2*x+3)+4*(1-y); y ; } x++; } x = a; y = 0; p = 2*z2 - 2*a+1; while(z2*(double)y/x<=1) { put4pixel(xc,yc,x,y,color); if(p<0) p+=2*z2*(2*y+3); else{ p+=2*z2*(2*y+3)+4*(1-x); x

Ngày đăng: 19/11/2014, 17:28

Từ khóa liên quan

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

Tài liệu liên quan