計算機圖形學課程設計_第1頁
計算機圖形學課程設計_第2頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機圖形學課程設計運行環(huán)境turboc2.0本程序完成了橡皮筋直線,橡皮筋圓,橡皮筋矩形框,多邊形裁剪和3階B曲線的作圖,且有比較友好的界面#ifndef_GRAPHICS_C_#define_GRAPHICS_C_#endif#define_MOUSE#defineCIRCLE1#defineLINE2#defineRECTANGLE3#includestdio.h#includestring.h#includegraphics.h#includemath.hintflag,num;intx,y,oldx,oldy,px,py;inta4,b4;charstring120;charzuob

2、iao20;#includeunionREGSinreg,outreg;structSREGSsr;void_mytreat(int,int,int,int);void_write(char*);voidmycross(intx,inty)setcolor(15);outtextxy(500,468,zuobiao);sprintf(zuobiao,x=%d,y=%d,x,y);setcolor(8);outtextxy(500,468,zuobiao);line(x-3,y-3,x+3,y+3);line(x+3,y-3,x-3,y+3);voidmycircle(doublex,doubl

3、ey,doubler)doublei;for(i=0.0;i360.0;i=i+4)line(x+r*cos(i+1)/360*3.1415*2),y+r*sin(i+1)/360*3.1415*2),x+r*cos(i+4.0)/360*3.1415*2),y+r*sin(i+4.0)/360*3.1415*2);void_Bezer(inta3,intb3,intm)intk,n,a0,a1,a2,a3,b0,b1,b2,b3,x,y;doublei,t;setwritemode(0);a0=(am%4+4*am%4+1+am%4+2)/6;a1=(am%4+2-am%4)/2;a2=(a

4、m%4-2*am%4+1+am%4+2)/2;a3=-(am%4-3*am%4+1+3*am%4+2-am%4+3)/6;b0=(bm%4+4*bm%4+1+bm%4+2)/6;b1=(bm%4+2-bm%4)/2;b2=(bm%4-2*bm%4+1+bm%4+2)/2;b3=-(bm%4-3*bm%4+1+3*bm%4+2-bm%4+3)/6;for(i=0;i3;i+=0.1)t=i/3;x=a0+a1*t+a2*t*t+a3*t*t*t;y=b0+b1*t+b2*t*t+b3*t*t*t;if(i=0)moveto(x,y);lineto(x,y);setwritemode(1);voi

5、dDisplayMouse()inreg.x.ax=1;int86(0x33,&inreg,&outreg);voidCloseMouse()inreg.x.ax=2;int86(0x33,&inreg,&outreg);unionREGSDisplayMouseStatus()inreg.x.ax=3;int86(0x33,&inreg,&outreg);returnoutreg;voidmeun(intx,inty,char*str)setcolor(8);outtextxy(x+5,28,str);setcolor(15);line(x,22,x,40);line(x,22,y,22);

6、setcolor(8);line(x,40,y,40);line(y,22,y,40);voiddrawwindows()setbkcolor(7);/*7*/setcolor(8);rectangle(0,20,640,460);rectangle(0,0,640,20);setfillstyle(1,1);floodfill(1,1,8);rectangle(0,460,640,480);setfillstyle(1,15);floodfill(1,461,8);setcolor(RED);outtextxy(10,468,FinishedByXuYuanFei.);setcolor(15

7、);line(0,41,640,41);line(0,459,640,459);setcolor(8);line(0,42,640,42);setcolor(15);rectangle(610,3,630,17);setfillstyle(1,7);floodfill(611,4,15);setcolor(8);line(610,17,630,17);line(630,3,630,17);line(611,4,628,16);line(611,16,628,4);rectangle(2,44,635,459);setcolor(15);rectangle(3,45,634,458);line(

8、611,3,628,15);line(611,15,628,3);meun(5,55,line);meun(65,165,rectangle);meun(175,250,circle);meun(260,330,Bezer);meun(340,400,Cut);voidGetMouseXY(int*x,int*y)DisplayMouse();outreg=DisplayMouseStatus();*x=outreg.x.cx;*y=outreg.x.dx;int_cut()doublea1120,b1120,a2120,b2120;intx1,y1,x2,y2,t,t1=0,t2,mark=

9、0,w=0,i;num=0;flag=CIRCLE;while(outreg.x.bx=1)GetMouseXY(&x,&y);while(1)GetMouseXY(&x,&y);if(oldx!=x|oldy!=y)if(y43&y0)line(a1num-1,b1num-1,a1num,b1num);num+;if(mark=1)if(w=0)x1=x,y1=y;w=1;num=0;elseif(w=1)x2=x,y2=y;rectangle(x1,y1,x2,y2);for(i=1;ix2)t=x1;x1=x2;x2=t;if(y1y2)t=y1;y1=y2;y2=t;w=2;t2=0;

10、for(i=0;i=y1)a2t2=a1i;b2t2+=b1i;if(b1i-y1)*(b1i+1-y1)=y1)a2t2=a1t1;b2t2+=b1t1;if(b1t1-y1)*(b10-y1)0)b2t2=y1;a2t2=(b1t1-y1)*(a10-a1t1)/(b1t1-b10)+a1t1;t2+;t1=0;t2-;for(i=0;i=x1)a1t1=a2i;b1t1+=b2i;if(a2i-x1)*(a2i+1-x1)=x1)a1t1=a2t2;b1t1+=b2t2;if(a2t2-x1)*(a20-x1)0)a1t1=x1;b1t1=(x1-a2t2)*(b20-b2t2)/(a2

11、0-a2t2)+b2t2;t1+;t2=0;t1-;for(i=0;it1;i+)if(b1i=y2)a2t2=a1i;b2t2+=b1i;if(b1i-y2)*(b1i+1-y2)0)b2t2=y2;a2t2=(b1i-y2)*(a1i+1-a1i)/(b1i-b1i+1)+a1i;t2+;if(b1t1=y2)a2t2=a1t1;b2t2+=b1t1;if(b1t2-y2)*(b10-y2)0)b2t2=y2;a2t2=(b1t1-y2)*(a10-a1t1)/(b1t1-b10)+a1t1;t2+;t1=0;t2-;for(i=0;it2;i+)if(a2i=x2)a1t1=a2i;b1

12、t1+=b2i;if(a2i-x2)*(a2i+1-x2)0)a1t1=x2;b1t1=(a2i+1-x2)*(b2i-b2i+1)/(a2i+1-a2i)+b2i+1;t1+;if(a2t2=x2)a1t1=a2t2;b1t1+=b2t2;if(a2t2-x2)*(a20-x2)0)a1t1=x2;b1t1=(a20-x2)*(b2t2-b20)/(a20-a2t2)+b20;t1+;t1-;for(i=1;i170&x5&x65&x260&x340&x400)_write(Drawdoubianxingtobecut);_cut();intBezer()num=1;while(1)GetM

13、ouseXY(&x,&y);if(oldx!=x|oldy!=y)if(y43&y460)_write(Quit:R_button);if(num=1)a0=x;b0=y;elseif(num4)line(a0,b0,a1,b1);a0=a1;b0=b1;a1=a2;b1=b2;a2=a3;b2=b3;a3=x;b3=y;line(a2,b2,a3,b3);_Bezer(a,b,4);num+;while(outreg.x.bx=1)GetMouseXY(&x,&y);if(outreg.x.bx=2)line(a0,b0,a1,b1);line(a1,b1,a2,b2);line(a2,b2

14、,a3,b3);_write(welcometousemysystem);return0;void_mytreat(intoldx,intoldy,intx,inty)if(num=1)if(flag=LINE)line(px,py,oldx,oldy);line(px,py,x,y);if(flag=CIRCLE)mycircle(px,py,sqrt(double)(px-oldx)*(px-oldx)+(py-oldy)*(py-oldy);mycircle(px,py,sqrt(double)(px-x)*(px-x)+(py-y)*(py-y);if(flag=RECTANGLE)r

15、ectangle(px,py,oldx,oldy);rectangle(px,py,x,y);voidmytreat(intx,inty)if(num=0)px=x;py=y;num=1;elsenum=0;voidopengraph()intgdriver,gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,);void_write(char*str)setcolor(15);outtextxy(200,468,string);setcolor(8);strcpy(string,str);outtextxy(200,468,string);intmain()flag=num=0;opengraph();drawwindows();DisplayMouse();setwritemode(1);strcpy(string,welcometousemysystem);outtextxy(200,468,string);GetMouseXY(&oldx,&oldy);mycross(oldx,oldy);while(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論