版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì) 運(yùn)行環(huán)境turboc2.0 如果有疑問(wèn)請(qǐng)發(fā)郵件到xuyuanfei本程序完成了橡皮筋直線,橡皮筋圓,橡皮筋矩形框,多邊形裁剪和3階B曲線的作圖,且有比較友好的界面#ifndef _GRAPHICS_C_#define _GRAPHICS_C_#endif#define _MOUSE#define CIRCLE 1#define LINE 2#define RECTANGLE 3#include "stdio.h"#include "string.h"#include"graphics.h"
2、;#include"math.h"int flag,num;int x,y,oldx,oldy,px,py;int a4,b4;char string120;char zuobiao20;#include <dos.h>union REGS inreg,outreg;struct SREGS sr;void _mytreat(int,int,int,int);void _write(char*);void mycross(int x,int y)setcolor(15);outtextxy(500,468,zuobiao);sprintf(zuobiao,&qu
3、ot;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);void mycircle(double x,double y,double r)double i;for(i=0.0;i<360.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)
4、;void _Bezer(int a3,int b3,int m)int k,n,a0,a1,a2,a3,b0,b1,b2,b3,x,y;double i,t;setwritemode(0);a0=(am%4+4*am%4+1+am%4+2)/6;a1=(am%4+2-am%4)/2;a2=(am%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
5、+1+3*bm%4+2-bm%4+3)/6;for(i=0;i<3;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);void DisplayMouse()inreg.x.ax=1;int86(0x33,&inreg,&outreg);void CloseMouse()inreg.x.ax=2;int86(0x33,&inreg,&outreg);union REGS DisplayM
6、ouseStatus()inreg.x.ax=3;int86(0x33,&inreg,&outreg);return outreg;void meun(int x,int y,char *str)setcolor(8);outtextxy(x+5,28,str);setcolor(15);line(x,22,x,40);line(x,22,y,22);setcolor(8);line(x,40,y,40);line(y,22,y,40);void drawwindows()setbkcolor(7); /*7*/setcolor(8);rectangle(0,20,640,46
7、0);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,"Finished By XuYuanFei.");setcolor(15);line(0,41,640,41);line(0,459,640,459);setcolor(8);line(0,42,640,42);setcolor(15);rectangle(610,3,
8、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(611,3,628,15);line(611,15,628,3);meun(5,55,"line");meun(65,165,"rectangle");meu
9、n(175,250,"circle");meun(260,330,"Bezer");meun(340,400,"Cut");void GetMouseXY(int *x,int *y)DisplayMouse();outreg=DisplayMouseStatus();*x=outreg.x.cx;*y=outreg.x.dx;int _cut()double a1120,b1120,a2120,b2120;int x1,y1,x2,y2,t,t1=0,t2,mark=0,w=0,i;num=0;flag=CIRCLE;while(o
10、utreg.x.bx=1)GetMouseXY(&x,&y);while(1)GetMouseXY(&x,&y);if(oldx!=x|oldy!=y)if(y<460)mycross(oldx,oldy);mycross(x,y);if(w=1)rectangle(x1,y1,oldx,oldy); rectangle(x1,y1,x,y);oldx=x;oldy=y;if(outreg.x.bx=1)if(y>43&&y<460)if(mark=0)a1num=x;b1num=y;_write("Draw duob
11、ianxing; wangcheng R_button");if(num>0)line(a1num-1,b1num-1,a1num,b1num);num+;if(mark=1)if(w=0)x1=x,y1=y;w=1;num=0;else if(w=1)x2=x,y2=y;rectangle(x1,y1,x2,y2);for(i=1;i<=t1;i+)line(a1i-1,b1i-1,a1i,b1i);line(a1t1,b1t1,a10,b10);if(x1>x2)t=x1;x1=x2;x2=t;if(y1>y2)t=y1;y1=y2;y2=t;w=2;/*
12、-*/t2=0;for(i=0;i<t1;i+)if(b1i>=y1)a2t2=a1i;b2t2+=b1i;if(b1i-y1)*(b1i+1-y1)<0)b2t2=y1;a2t2=(b1i-y1)*(a1i+1-a1i)/(b1i-b1i+1)+a1i;t2+;if(b1t1>=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<t2;i+)if(a2i>=x1)
13、a1t1=a2i;b1t1+=b2i;if(a2i-x1)*(a2i+1-x1)<0)a1t1=x1;b1t1=(x1-a2i)*(b2i+1-b2i)/(a2i+1-a2i)+b2i;t1+;if(a2t2>=x1)a1t1=a2t2;b1t1+=b2t2;if(a2t2-x1)*(a20-x1)<0)a1t1=x1;b1t1=(x1-a2t2)*(b20-b2t2)/(a20-a2t2)+b2t2;t1+;t2=0;t1-;for(i=0;i<t1;i+)if(b1i<=y2)a2t2=a1i;b2t2+=b1i;if(b1i-y2)*(b1i+1-y2)&l
14、t;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;i<t2;i+)if(a2i<=x2)a1t1=a2i;b1t1+=b2i;if(a2i-x2)*(a2i+1-x2)<0)a1t1=x2;b1t1=(a2i+1-x2)*(b2i-b2i+1)/(a
15、2i+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;i<=t1;i+)line(a1i-1,b1i-1,a1i,b1i);line(a1t1,b1t1,a10,b10);/*-*/_write("Quit:R_button");while(outreg.x.bx=1)GetMouseXY(&x,&y);if(outr
16、eg.x.bx=2)if(mark=0)mark=1;line(a1num-1,b1num-1,a10,b10);t1=num-1;_write("Draw rectangle to cut the doubianxing");else if(mark=1)_write("welcome to use my system");return 0;while(outreg.x.bx=2)GetMouseXY(&x,&y);void handlevent(int *flag,int x)num=0;if(x>170&&x&
17、lt;250) *flag=CIRCLE; _write("Draw circle");else if(x>5&&x<55) *flag=LINE; _write("Draw line");else if(x>65&&x<165) *flag=RECTANGLE; _write("Draw rectangle");else if(x>260&&x<330) _write("Draw bezer");Bezer(); else if(
18、x>340&&x<400) _write("Draw doubianxing to be cut");_cut();int Bezer()num=1;while(1)GetMouseXY(&x,&y);if(oldx!=x|oldy!=y)if(y<460)mycross(oldx,oldy);mycross(x,y);oldx=x;oldy=y;if(outreg.x.bx=1)if(y>43&&y<460)_write("Quit: R_button");if(num=1)
19、a0=x;b0=y;else if(num<4)anum-1=x;bnum-1=y;line(anum-2,bnum-2,anum-1,bnum-1);else if(num=4)anum-1=x;bnum-1=y;line(anum-2,bnum-2,anum-1,bnum-1);_Bezer(a,b,4);else if(num>4)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
20、)GetMouseXY(&x,&y);if(outreg.x.bx=2)line(a0,b0,a1,b1);line(a1,b1,a2,b2);line(a2,b2,a3,b3);_write("welcome to use my system");return 0;void _mytreat(int oldx,int oldy,int x,int y)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)rectangle(px,py,oldx,oldy);rectangle(px,py,x,y);void mytreat(int x,int y)if(num=0)px=x;py=y;num=1;elsenum=0;void opengraph()int gdriver,gmode;gdriver=DETECT;initgraph(&gdriver,&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全員A證考試通關(guān)試卷提供答案解析含答案詳解
- 2025 年造價(jià)工程師考試《工程經(jīng)濟(jì)》模擬試題及答案詳解
- 上市公司重組融資方案策劃書(shū)
- 安全員A證考試考前沖刺分析(有一套)附答案詳解
- 工作綜合能力歷年參考題庫(kù)含答案詳解(5套試題)
- 安全員A證考試能力測(cè)試備考題附完整答案詳解【考點(diǎn)梳理】
- 安全員A證考試每日一練(能力提升)附答案詳解
- 事業(yè)單位選調(diào)5人(黑龍江)模擬試卷附答案詳解(考試直接用)
- 安全員A證考試預(yù)測(cè)復(fù)習(xí)附參考答案詳解【培優(yōu)b卷】
- 安全員A證考試考前沖刺練習(xí)題(有一套)附答案詳解
- GB/T 4447-2025船舶與海洋技術(shù)海船起錨機(jī)和起錨絞盤
- 中考體育前家長(zhǎng)會(huì)課件
- 江蘇省南京市2024-2025學(xué)年高一上學(xué)期1月期末學(xué)情調(diào)研測(cè)試生物試題(解析版)
- 工作簡(jiǎn)歷模板
- 2024年廣東省佛山市南海區(qū)道路建設(shè)管理處招聘公益一類事業(yè)編制人員3人歷年管理單位遴選500模擬題附帶答案詳解
- 動(dòng)物輔助療法行業(yè)研究報(bào)告
- 模塊化軟件質(zhì)量保證
- 人教版七年級(jí)語(yǔ)文上冊(cè)《課內(nèi)文言文基礎(chǔ)知識(shí) 》專項(xiàng)測(cè)試卷及答案
- 【關(guān)于構(gòu)建我國(guó)個(gè)人破產(chǎn)制度的探討(論文)16000字】
- 加固專業(yè)承包合同
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 5-01-05-01 中藥材種植員 人社廳發(fā)200994號(hào)
評(píng)論
0/150
提交評(píng)論