逐点比较法直线插补c语言程序_第1页
逐点比较法直线插补c语言程序_第2页
逐点比较法直线插补c语言程序_第3页
逐点比较法直线插补c语言程序_第4页
逐点比较法直线插补c语言程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 逐点比较法插补程序#includeHconio.hn#iiiclude”graphics.h"#iiicludeMprocess.hn#defiiieNi_ciicle0#defiiieShun.circle1voidvoiddiaw_Base_circle();voiddiaw_cabu_ciicle();voidclose_graph();voidacrroods();staticfloatxO.vO;voidliiie_cabu(),draw_line().draw_lme_cabu();voidlme_cabu() /*此函数控制直线插步两次*/{mti;miCgraph();sleep(l);foi(i=0;i<2;i++){line(0420300J20);outtextxy(310,120;,ZH);lme(l00J0,100.300);outtextxy(110300;*Xn);outtextxy(90J30;,On);draw_line();if(i==o)draw_luie_cabu(6);elsediaw_liiie_cabu(2);gotoxv(50,5);getch();cleardevice();s亡tcoloi(WHITE);}}_voiddrawJmeQ/*画直线*/{line(100,120,600,450);textcoloi(YELLOW);duecMdeo=0;gotoxy(45,5);cpiiiitf(HLmefiom:X0Y0Z0n);gotoxy(45,6);cprmtf(HLmeto:X500Y0Z330J;gotoxy(45,7);cprmtf(HUnits:PixelH);gotoxy(45,8);cpriiitf(HLmenow:”);}voiddiaw_lme_cabu(mtstep)/*关键的直线插补函数*/mtXe=600.Ye=450;floatFiilXih=100,Ym=120;setcolor(RED);moveto(Xin.Ym);while(Xin<=Xe&&Ym<=Ye){Fm=(Ym420)*(Xe400).(Xin400)*(Ye-120);if(Fm>=0)Xm=Xm+s忙p;elseYm=Ym+s忙p;lineto(Xin,Ym);gotoxy(55,8);pnntfCX%3・0fY0Z%3.Of,Xin-100.Ym-120);delav(llOO);}}/*圆插补部分的函数区*/voidinit_graph() /*图形系统初始化*/{iiitgdrive=DETECT.gmode;iiiitgiaph(&gdrive,&gmode,"");cleaideviceQ;}voidacrroods() /*屏幕中心坐标*/{x0=getniaxx()/2;y0=getmaxy()/2;}_voiddiaw_Base_circle() /*画圆及写参数*/{line(x0-200,y0,x0+200,y0);outtextxy(x0+220,y0/,Zn);lme(x0.v0-l80,x0,y0+l80);outtextxy(x0+10.y04-l80/XH);outtextxy(xO-l0.v0+10「CT);circle(x0,y0,150);textcoloi(YELLOW);direct\rideo=0:gotoxy(46,2);cprintf{nCirclestail:X0Y0Z150H);gotoxy(463);cpiiiitf(nCircleend:X0Y0Z150H);gotoxy(46,4);cpimtf(nUmts 〔Pixel”);gotoxy(46,5);cprmtf(nCirclenow:");}voidclose_graph() /*关图形系统*/closegraphQ;}voiddiaw_cabu_circle(iiitsstep.mtDirectory)/*关键的圆插补函数*/{iiitflag=0;floatFm,Xm.Ym;Xin=x0+150;Ym=yO;moveto(Xin,Ym);setcolor(RED);while(l) 严分象限,顺圆和逆圆讨论*/Fm=(Xin-xO)*(Xin-xO)+(Ym-\7O)*(Ym-yO)-l50*150;/*圆判断公式*7if(Fm>=0){if(!Directory){/*逆圆判断*/if(Xin>=x0&&Ym<=v0){if(flag)break;/*if语句判断象限,以下一样*/else Xin=Xm-sstep;}if(Xm<=xO&&Ym<=y^){flag=l;Ym=Ym+sstep;}if<XiiK=x0&&Ym>=y°)Xm=Xm+sstep;if(Xm>=x0&&Ym>=yO)Ym=Ym-sstep;}else{ /*itisDuectoiyselse*/if(Xin>xO&&Ym<yO)Ym=Ym+sstep;if<Xm<=x0&&Ym<=yO)Xin=Xin+sstep;if(Xm<x0&&Ym>v0){flag=1;Ym=Ym-sstep;}

if(Xm>=x0&&Ym>=yO){

if(flag)break;Xm=Xm-sstep;}}else{ /*itisFnTselse*/if(!Directory){if(Xm>xO&&Ym<v0)

}if(Xmv=x0&&Ym<=y^)}if(Xm<=x0&&Ym>=yO)Ym=Ym+sstep;else{if(Xm>=x0&&Ym>=yO)Xm=Xm+sstep;if(Xin>xO&&Ym<yO)Xm=Xm+sstep;if(Xmv=x0&&Ym<=y^)Ym=Ym-sstep;}if(Xmv=x0&&Ym<=y^)}if(Xm<=x0&&Ym>=yO)Ym=Ym+sstep;else{if(Xm>=x0&&Ym>=yO)Xm=Xm+sstep;if(Xin>xO&&Ym<yO)Xm=Xm+sstep;if(Xmv=x0&&Ym<=y^)Ym=Ym-sstep;if(Xm<=x0&&Ym>=vO){flag=1; Xin=Xin-sstep;}if(Xin>=x0&&Ym>=yO){iRflag)break:elseYm=Ym+sstep;}}lineto(XiiKYm);gotoxv(58,5);prmtf(MX%3.0fY0Z%3.Of^Ym-yO^Xm-xO);delay(SOO);voidcircle_demo(intDiiectory) /*控制圆插补两次*/mti=O,sstep;imyaph();sleep⑵;acnoods(&xO,&yO);fdr(i=0;i<2;i++)diaw_Base_circle(150);if(i==0){sstep=6;diaw_cabu_ciicle(sstep.Directoiy);}else{sstep=l;diaw_cabu_ciicle(sstep.Directoiy);}getch();cleardeviceQ;s亡tcoloi(WHITE);}}/*圆插补部分的函数区结束*/niam()/*主函数负贵写封面和函数调用*/{iiitchoice=0;mit_giaph();wliile(choice!=4){setfillstyle(l.RED);bar(2OO.30,400.80);setcolor(GREEN);settextstyle(3,0,10);outtextxy(220,50;,DEMOPROGRAMBYP.Y.FH);setcoloi(WHITE);settextstyle(O,O,l);outtextxy(200,120/1.Linedemo.");outtextxy(200,140/2.Shun_Circledemo.");outtextxy(200,160/3.NLCiicledemo.”);outtextxy(200,180/4.Quittheprogram.n);outtextxy(160,200/Pleaseenteryourchoice/1);gotoxy(46,13);scaufp%d”,&choice);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论