




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档插补程序源代码目录1逐点比较法插补c语言程序源代码022 逐点比较法圆弧插补VB源程序073 逐点比较法直线插补VB源程序114 时间分割法直线插补参考VB程序135 时间分割法圆弧插补VB源程序141 逐点比较法插补c语言程序源代码 #include conio.h #include graphics.h #include process.h #define Ni_circle 0 #define Shun_circle 1 void init_graph(); void draw_Base_circle(); void draw_cabu_circle(); void close_graph(); void acrroods(); static float x0,y0; void line_cabu(), draw_line(),draw_line_cabu(); void line_cabu() /*此函数控制直线插步两次*/ int i; init_graph(); sleep(1); for(i=0;i2;i+) line(0,120,300,120); outtextxy(310,120,Z); line(100,10,100,300); outtextxy(110,300,X); outtextxy(90,130,O); draw_line(); if(i=0) draw_line_cabu(6); else draw_line_cabu(2); gotoxy(50,5); getch(); cleardevice(); setcolor(WHITE); void draw_line()/*画直线*/ line(100,120,600,450); textcolor(YELLOW); directvideo=0; gotoxy(45,5); cprintf(Line from:X0 Y0 Z0 ); gotoxy(45,6); cprintf(Line to :X500 Y0 Z330); gotoxy(45,7); cprintf(Units :Pixel); gotoxy(45,8); cprintf(Line now:); void draw_line_cabu(int step)/*关键的直线插补函数*/ int Xe=600,Ye=450; float Fm,Xm=100,Ym=120; setcolor(RED); moveto(Xm,Ym); while(Xm=Xe&Ym=0) Xm=Xm+step; else Ym=Ym+step; lineto(Xm,Ym); gotoxy(55,8); printf(X%3.0f Y0 Z%3.0f,Xm-100,Ym-120); delay(1100); /* 圆插补部分的函数区*/ void init_graph() /*图形系统初始化*/ int gdrive=DETECT,gmode; initgraph(&gdrive,&gmode,); cleardevice(); void acrroods() /*屏幕中心坐标*/ x0=getmaxx()/2; y0=getmaxy()/2; void draw_Base_circle() /*画圆及写参数*/ line(x0-200,y0,x0+200,y0); outtextxy(x0+220,y0,Z); line(x0,y0-180,x0,y0+180); outtextxy(x0+10,y0+180,X); outtextxy(x0-10,y0+10,O); circle(x0,y0,150); textcolor(YELLOW); directvideo=0; gotoxy(46,2);cprintf(Circle start:X0 Y0 Z150); gotoxy(46,3);cprintf(Circle end :X0 Y0 Z150); gotoxy(46,4);cprintf(Units :Pixel); gotoxy(46,5);cprintf(Circle now:); void close_graph() /*关图形系统*/ closegraph(); void draw_cabu_circle(int sstep,int Directory)/*关键的圆插补函数*/ int flag=0; float Fm,Xm,Ym; Xm=x0+150; Ym=y0; moveto(Xm,Ym); setcolor(RED); while(1) /*分象限,顺圆和逆圆讨论*/ Fm=(Xm-x0)*(Xm-x0)+(Ym-y0)*(Ym-y0)-150*150;/*圆判断公式*/ if(Fm=0) if(!Directory) /*逆圆判断*/ if(Xm=x0&Ym=y0) if(flag) break; /*if语句判断象限,以下一样*/ else Xm=Xm-sstep; if(Xm=x0&Ym=y0) flag=1; Ym=Ym+sstep; if(Xm=y0) Xm=Xm+sstep; if(Xm=x0&Ym=y0) Ym=Ym-sstep; else /*it is Directorys else*/ if(Xmx0&Ymy0) Ym=Ym+sstep; if(Xm=x0&Ym=y0) Xm=Xm+sstep; if(Xmy0) flag=1; Ym=Ym-sstep; if(Xm=x0&Ym=y0) if(flag) break; Xm=Xm-sstep; else /*it is Fms else*/ if(!Directory) if(Xmx0&Ymy0) if(flag) break; else Ym=Ym-sstep; if(Xm=x0&Ym=y0) flag=1; Xm=Xm-sstep; if(Xm=y0) Ym=Ym+sstep; if(Xm=x0&Ym=y0) Xm=Xm+sstep; else if(Xmx0&Ymy0) Xm=Xm+sstep; if(Xm=x0&Ym=y0) Ym=Ym-sstep; if(Xm=y0) flag=1; Xm=Xm-sstep; if(Xm=x0&Ym=y0) if(flag) break; else Ym=Ym+sstep; lineto(Xm,Ym); gotoxy(58,5); printf(X%3.0f Y0 Z%3.0f ,Ym-y0,Xm-x0); delay(800); void circle_demo(int Directory) /*控制圆插补两次*/ int i=0,sstep; init_graph(); sleep(2); acrroods(&x0,&y0); for(i=0;i= 0 Then x动点 = x动点 - 1: Line -Step(0, -x步长), vbRed Else z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed End If 偏差计算 动点象限判别 If 象限标志 1 Then GoTo xx End If 单步连续判断 Loop ElseIf 顺逆标志 = 逆 Then Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then z动点 = z动点 - 1: Line -Step(-z步长, 0), vbRed Else x动点 = x动点 + 1: Line -Step(0, x步长), vbRed End If DoEvents 偏差计算 动点象限判别 If 象限标志 1 Then GoTo xx End If Loop End If Case 2: 单步连续判断 If 顺逆标志 = 顺 Then 第二象限插补 Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then z动点 = z动点 - 1: Line -Step(-z步长, 0), vbRed Else x动点 = x动点 - 1: Line -Step(0, -x步长), vbRed End If 偏差计算 动点象限判别 If 象限标志 2 Then GoTo xx End If Loop ElseIf 顺逆标志 = 逆 Then Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(0, x步长), vbRed Else z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed End If 偏差计算 动点象限判别 If 象限标志 2 Then GoTo xx End If Loop End If Case 3: 单步连续判断 If 顺逆标志 = 顺 Then 第三象限插补 Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(0, x步长), vbRed Else z动点 = z动点 - 1: Line -Step(-z步长, 0), vbRed End If DoEvents 偏差计算 动点象限判别 If 象限标志 3 Then GoTo xx End If Loop ElseIf 顺逆标志 = 逆 Then Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed Else x动点 = x动点 - 1: Line -Step(0, -x步长), vbRed End If 偏差计算 动点象限判别 If 象限标志 3 Then GoTo xx End If Loop End If Case 4: 单步连续判断 If 顺逆标志 = 顺 Then 第三象限插补 Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed Else x动点 = x动点 + 1: Line -Step(0, x步长), vbRed End If 偏差计算 动点象限判别 If 象限标志 4 Then GoTo xx End If Loop ElseIf 顺逆标志 = 逆 Then Do Until (x动点 - x终点) = 0 And (z动点 - z终点) = 0 If 偏差 = 0 Then x动点 = x动点 - 1: Line -Step(0, -x步长), vbRed Else z动点 = z动点 - 1: Line -Step(-z步长, 0), vbRed End If 偏差计算 动点象限判别 If 象限标志 4 Then GoTo xx End If Loop End If End Select End Sub3 逐点比较法直线插补VB源程序Sub 偏差计算() 偏差 = Abs(x终点) z动点 - x动点 Abs(z终点)End SubSub 插补()Dim c As Integer Select Case 象限标志 Case 1: 第一象限插补 Do Until x动点 + z动点 = 总步数 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(0, x步长), vbRed Else z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed End If 偏差计算 Loop Case 2: 第二象限插补 c = x终点: x终点= z终点: z终点= -c c = x步长: x步长 = z步长: z步长 = -c Do Until x动点 + z动点 = 总步数 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(x步长, 0), vbRed Else z动点 = z动点 + 1: Line -Step(0, z步长), vbRed End If 偏差计算 Loop Case 3: 第三象限插补 x步长 = -x步长: z步长 = -z步长 Do Until x动点 + z动点 = 总步数 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(0, x步长), vbRed Else z动点 = z动点 + 1: Line -Step(z步长, 0), vbRed End If 偏差计算 Loop Case 4: 第四象限插补 c = x终点: x终点= -z终点: z终点 = c c = x步长: x步长 = -z步长: z步长 = c Do Until x动点 + z动点 = 总步数 If 偏差 = 0 Then x动点 = x动点 + 1: Line -Step(x步长, 0), vbRed Else z动点 = z动点 + 1: Line -Step(0, z步长), vbRed End If 偏差计算 Loop End SelectEnd Sub4 时间分割法直线插补参考VB程序Sub 插补()Dim l, K, a, B, f1, t x动点对起点 = 0: z动点对起点 = 0 f1 = f 10: t = Ts / 60000 l = Sqr(x终点对起点 2 + z终点对起点 2) K = f1 t / l a = Sqr(x动点对起点 - x终点对起点) 2 + (z动点对起点 - z终点对起点) 2)x步长 = K x终点对起点: z步长 = K z终点对起点: B = Sqr(z步长 2 + x步长 2) Do Until a = B / 2 x动点对起点 = x动点对起点 + x步长: z动点对起点 = z动点对起点 + z步长 a = Sqr(x动点对起点 - x终点对起点) 2 + (z动点对起点 - z终点对起点) 2) Line -Step(z步长 系数, x步长 系数), vbRedx动点对原点 = x动点对起点 + x起点对原点: y动点对原点 = y动点对起点 + y起点对原点: z动点对原点 = z动点对起点 + z起点对原点 LoopEnd Sub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康教育相关试题及答案总结
- 护理过程概念试题及答案
- 全面解析2025年建造师试题及答案
- 2025年一级建造师考试必考知识点试题及答案
- 初级审计师复习计划策略试题及答案
- 扩充理解的高级审计师试题及答案
- 道路护栏加工合同协议
- 2025年一级建造师知识图谱试题及答案
- 2025年入团考试常见试题及答案详解
- 完整的安全管理人员考试试题及答案
- 专题05-必修三-必过知识点清单(解析版)(新教材北师大版)
- 2025年四川航空股份有限公司招聘笔试参考题库含答案解析
- 2025年广东工业大学招聘行政助理1名历年高频重点提升(共500题)附带答案详解
- 铁路机车车辆制动钳工(高级)职业鉴定考试题库(含答案)
- 河北省保定市重点中学2025届高考英语一模试卷含解析
- 《便携式挥发性有机物检测仪 (PID)技术要求及监测规范》
- 甲亢碘131治疗的护理
- 中建群塔作业防碰撞专项施工方案
- 2025届江苏省南京师范大学附属中学高考仿真卷英语试题含解析
- 2024年10月广东省高等教育自学考试08263工程经济学与项目资源试题及答案
- 吉林交通职业技术学院《工程造价》专业人才培养方案3年制(2019版)
评论
0/150
提交评论