语言模拟直线插补与圆弧插补程序设计_第1页
语言模拟直线插补与圆弧插补程序设计_第2页
语言模拟直线插补与圆弧插补程序设计_第3页
语言模拟直线插补与圆弧插补程序设计_第4页
语言模拟直线插补与圆弧插补程序设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、数控技术课程设计说明书设计题目 直线插补与圆弧插补程序设计 机械设计以及自动化专业 机械工程学院 机械102班 设计者 青岛理工大学 2013年6月20日目 录1. 设计题目12.目录23.直线插补流程图34.直线插补程序45.程序结果86.圆弧插补流程图97.圆弧插补程序108.程序结果21一直线插补1.直线插补程序流程图置FM=0输入XE、YE、XOY、NXYFM0?XOR=1或4?XOR=1或2?ZF=1ZF=2ZF=3ZF=4FM=FM-YEFM=FM+YE调用走步控制程序NXY=NXY-1NXY=0?开始 结束YNYNYNYN2.直线插补程序设计#include "stdi

2、o.h"int i,X,Y,X0,Y0,Xe,Ye,F,N;int a302;void main() int m; int menu(); void yi(); void er(); void san(); void si(); void te(); void shuchu(); m=menu(); a00=X0; a01=Y0; switch(m) case 1:yi();shuchu();break; case 2:er();shuchu();break; case 3:san();shuchu();break; case 4:si();shuchu();break; case

3、5:te();shuchu();break; default:printf("无法插补n"); int menu() int t; printf("输入起点坐标n"); scanf("%d,%d",&X0,&Y0); printf("输入终点坐标n"); scanf("%d,%d",&Xe,&Ye); if (Xe>=X0&&Ye>=Y0) t=1; else if (Xe<=X0&&Ye>=Y0) t=2;

4、 else if (Xe<=X0&&Ye<=Y0) t=3; else if (Xe>=X0&&Ye<=Y0) t=4; else if (Xe=X0&&(Ye>Y0&&Y0>=0)|(Ye<Y0&&Y<=0) t=5; else t=6; return(t); void yi() F=0; N=Xe-X0+Ye-Y0; X=X0; Y=Y0; for(i=1;i<=N;i+) if(F>=0) X+; ai0=X; ai1=Y; F-=Ye-Y0; el

5、se Y+; ai0=X; ai1=Y; F+=Xe-X0; void er() F=0; N=X0-Xe+Ye-Y0; X=X0; Y=Y0; for(i=1;i<=N;i+) if(F>=0) X-; ai0=X; ai1=Y; F-=Ye-Y0; else Y+; ai0=X; ai1=Y; F+=X0-Xe; void san() F=0; N=X0-Xe+Y0-Ye; X=X0; Y=Y0; for(i=1;i<=N;i+) if(F>=0) X-; ai0=X; ai1=Y; F-=Y0-Ye; else Y-; ai0=X; ai1=Y; F+=X0-Xe

6、; void si() F=0; N=Xe-X0+Y0-Ye; X=X0; Y=Y0; for(i=1;i<=N;i+) if(F>=0) X+; ai0=X; ai1=Y; F-=Y0-Ye; else Y-; ai0=X; ai1=Y; F+=Xe-X0; void te()N=Ye-Y0; for(i=1;i<=N;i+) if(Ye>0) Y+; ai0=X; ai1=Y; else if(Ye<0) Y-; ai0=X; ai1=Y; void shuchu() for(i=0;i<=N;i+) printf("%d",i);

7、printf("%d,%dn",ai0,ai1); 3程序结果例如 起点(0,0)终点(6,4)步数 坐标1 1,02 1,13 2,14 2,25 3,26 4,27 4,38 5,39 6,310 6,4二.圆弧插补1.圆弧插补程序流程图ZF=4ZF=4RNS=1,6?RNS=2,5?输入X0、Y0、NXY、RNS置FM=0、XM=X0、YM=Y0RNS=1,2,6,8?FM0?FM0?RNS=2,7?RNS=1,8?ZF=3ZF=2ZF=1ZF=1ZF=2ZF=3FM=FM-2XM=1FM=FM+2XM=1FM=FM-2YM=1FM=FM+2YM+1YM=YM+1YM

8、=XM-1YM=XM+1YM=YM-1调用走步控制程序NXY=NXY-1NXY=0?结束NNYNYYNNYNYNYNYN NNN2.圆弧插补程序#include "stdio.h"#include "math.h"int X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4;int i=1,r,f,s;void main() int m; int menu(); void yishun(); void yini(); void ershun(); void erni(); void sanshun(); void sanni(); void sis

9、hun(); void sini(); void shuchu(); m=menu(); switch(m) case 1:yishun();break; case 2:yini();break; case 3:ershun();break; case 4:yini();break; case 5:sanshun();break; case 6:yini();break; case 7:sishun();break; case 8:yini();break; default:printf("无法插补n"); int menu() int t; printf("输入

10、原点坐标n"); scanf("%d,%d",&X0,&Y0); printf("输入起点坐标n"); scanf("%d,%d",&X3,&Y3); printf("输入终点坐标n"); scanf("%d,%d",&X4,&Y4); printf("1:顺时针圆弧n"); printf("2:逆时针圆弧n"); scanf("%d",&s); X1=X3-X0; Y1

11、=Y3-Y0; X2=X4-X0; Y2=Y4-Y0; r=X1*X1+Y1*Y1; if (X1>=0&&Y1>0&&s=1) t=1; else if (X1>0&&Y1>=0&&s=2) t=2; else if (X1<0&&Y1>=0&&s=1) t=3; else if (X1<=0&&Y1<0&&s=2) t=4; else if (X1<=0&&Y1<0&&s=

12、1) t=5; else if (X1<0&&Y1<=0&&s=2) t=6; else if (X1>0&&Y1<=0&&s=1) t=7; else if (X1>=0&&Y1<0&&s=2) t=8; else t=9; return(t); void yishun() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%

13、dn",X1,Y1); else X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void sishun(); sishun(); void yini() do f=X1*X1+Y1*Y1-r; if(f>=0) X1-; f-=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); el

14、se Y1+; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void erni(); erni(); void ershun() do f=X1*X1+Y1*Y1-r; if(f>=0) X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1+; f+=2*Y1+1; i+

15、; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void yishun(); yishun(); void erni() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else X1-; f-=2*X1+1; i+; printf("%d&q

16、uot;,i); printf("%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void sanni(); sanni(); void sanshun() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1+; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else X1-; f-=2*X1+1; i+; printf("%d",i); printf(&q

17、uot;%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void ershun(); ershun(); void sanni() do f=X1*X1+Y1*Y1-r; if(f>=0) X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1-; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X

18、1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void sini(); sini(); void sishun() do f=X1*X1+Y1*Y1-r; if(f>=0) X1-; f-=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void sans

温馨提示

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

评论

0/150

提交评论